Php скрипт отправляет на почту пустые письма
- Скрипт иногда отправляет на почту пустые письма хотя поля формы required
- В error_log появляются ошибки:
- PHP Warning: mail(): Multiple or malformed newlines found in additional_header in /public_html/sendmail.php on line 19
- PHP Notice: Undefined index: name in /public_html/sendmail.php on line 2
<?php
$name = $_POST['name'];
$email = $_POST['email'];
$mess = $_POST['mess'];
$name = htmlspecialchars($name);
$email = htmlspecialchars($email);
$mess = htmlspecialchars($mess);
$name = urldecode($name);
$email = urldecode($email);
$mess = urldecode($mess);
$name = trim($name);
$email = trim($email);
$mess = trim($mess);
# SEND -------------------------------
mail("[email protected]", "Заявка с сайта MySite", "Имя: " . $name . " -||- " . "E-mail: " . $email , "$mess \r\n");
header("Location:https://mysite.ru");
?>
В чем проблема? Из-за чего на почту некоторые письма приходят пустыми?
Ответы (2 шт):
атрибут required поддерживают не все браузеры http://htmlbook.ru/html/input/required
также требуется делать валидацию на уровне php
-
PHP Warning: mail(): Multiple or malformed newlines found in additional_header in /public_html/sendmail.php on line 19
4-ый параметр в вызове "$mess \r\n". additional_headers - Строка или массив, которые будут вставлены в конец отправляемых заголовков письма. Там не допускаются переводы строк
PHP Notice: Undefined index: name in /public_html/sendmail.php on line 2
проверять параметр if(isset($_POST['name']) ) { }
У вас тело сообщения передаётся в параметр additional_headers, о чём нам сообщает первая ошибка
Как вы вызываете:
mail(
"[email protected]", // string $to
"Заявка с сайта MySite", // string $subject
"Имя: " . $name . " -||- " . "E-mail: " . $email , // string $message
"$mess \r\n" // mixed $additional_headers
);
Как, вероятно, хотели:
mail(
"[email protected]", // string $to
"Заявка с сайта MySite", // string $subject
"Имя: " . $name . " -||- " . "E-mail: " . $email . "$mess \r\n" // string $message
);