Здравствуйте! Столкнулся с такой ситуацией: скопировали с другого нашего сайта калькулятор, который должен еще и на почту отправлять результаты. Для этого в нем есть файл mail.php: Код (Text): ?php /* * Contact Form Class */ header('Cache-Control: no-cache, must-revalidate'); header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); header('Content-type: application/json'); $admin_email = "igorsrt@mail.ru"; // Your Email $message_min_length = 1; // Min Message Length class Contact_Form{ function __construct($details, $email_admin){ $this->area = trim(stripslashes($details['area'])); $this->aver_thick_screed = trim(stripslashes($details['aver_thick_screed'])); $this->floor = trim(stripslashes($details['floor'])); $this->summa = trim(stripslashes($details['summa'])); $this->my_mail = trim(stripslashes($details['my_mail'])); $this->subject = "Заказ с калькулятора!"; // Subject $this->message = "<h1>Данные отправителя</h1> <div style='font: 14px \"trebuchet ms\";'> <br> Площадь помещения (кв.м.): <b>".$this->area."</b> <br> Средняя толщина стяжки (мм): <b>".$this->aver_thick_screed."</b> <br> Этаж: <b>".$this->floor."</b> <br> Итого: <b>".$this->summa."</b> <br> Почта отправителя: <b>".$this->my_mail."</b> </div>"; $this->email_admin = $email_admin; $this->response_status = 1; $this->response_html = "Ваша заказ принят!"; } private function sendEmail(){ $mail = mail($this->email_admin, $this->subject, $this->message, "From: Teeth\r\n" ."Content-type: text/html; charset=utf-8\r\n" ."Reply-To: ".$this->contact."\r\n" ."X-Mailer: PHP/" . phpversion()); $mail2 = mail($this->my_mail, $this->subject, $this->message, "From: Teeth\r\n" ."Content-type: text/html; charset=utf-8\r\n" ."Reply-To: ".$this->contact."\r\n" ."X-Mailer: PHP/" . phpversion()); if($mail) { $this->response_status = 1; $this->response_html = $this->message; } } function sendRequest(){ if($this->response_status) { $this->sendEmail(); } $response = array(); $response['status'] = $this->response_status; $response['html'] = $this->message; echo json_encode($response); } } $contact_form = new Contact_Form($_POST, $admin_email); $contact_form->sendRequest(); ?> Проблема в том, что если просто в браузере вбить путь до этого mail.php (ну и само название файла mail.php), то на почту приходит письмо (с незаполненными полями, конечно)... и, похоже, боты неприминули этим воспользоваться, т.к. таких "пустых" писем куча (в самой форме на странице сайта стоит проверка заполнения полей)... Соответственно вопрос: Что делать? Или ставить условие в сам файл mail.php (например что бы была обязательно заполнена почта отправителя $this->my_mail - как это сделать?), либо где-то еще, ограничить доступ к этому файлу для роботов (на сайте-источнике таких проблем не наблюдается), как правильнее?
а почему не Код (Text): if(!empty($_POST)) я не первый раз вижу что через $_SERVER проверяют пост.. а зачем??