Он отправляет пустые поля, потому что вы не пропустили ни одного из входов массивов POST в сообщении (теле) и выполняете функцию mail()
, как только страница загружена.
Вот как это делается при проверке любых пустых полей:
Обратите внимание, что я изменил аргументы mail()
и добавил несколько условных операторов.
Примечание: Похоже, что пропущены входные данные, поэтому вам нужно добавить их в себя.
if(isset($_POST['submit'])) {
if(!empty($_POST['name'])
&& !empty($_POST['phone'])
&& !empty($_POST['body'])) {
$to = "email@example.com";
$name = $_POST['name'];
$phone = $_POST['phone'];
$body = $_POST['body'];
$msg = "Mail from: $name\n" . "Message: $body\n" . "Phone: $phone \n";
// use wordwrap() if lines are longer than 70 characters
$msg = wordwrap($msg,70);
// send email
if(mail($to, $subject, $msg)){
echo "Mail sent.";
}else{ echo "There was an error."; }
}else{
echo "Some fields were left empty.";
}
}
Обратитесь к руководству по mail()
для получения дополнительной информации и добавления заголовков, так как они могут быть отклонены илирассматривается как спам: