Так что недавно я исправил свою контактную форму на моем сайте, но у меня есть проблема. Люди могут отправлять мне электронные письма без необходимости помещать что-либо в поля контактной формы.
Поэтому многие могут просто нажать кнопку «Отправить», не вводя ничего, что действительно раздражает.
В любом случае, чтобы это исправить?
Вот мой PHP-код: https://hastebin.com/ukowawovab.pl
Вот мой HTML-код: https://hastebin.com/hisayacuji.xml
Спасибо!
TrifleTower
Как я уже говорил в комментариях, проверьте наличие пустых полей.
Даже с required
добавлено, что боты могут напрямую обращаться к файлу php или другим.
<?php
if(!empty($_REQUEST['name'])
&& !empty($_REQUEST['email'])
&& !empty($_REQUEST['skype'])
&& !empty($_REQUEST['message'])){
$to = "[email protected]";
$subject = "FluxDesigns Contact Form";
$name = $_REQUEST['name'];
$email = $_REQUEST['email'];
$skype = $_REQUEST['skype'];
$message = $_REQUEST['message'];
$ip = $_SERVER['REMOTE_ADDR'];
$body = " Name: $name \n Email: $email \n Skype: $skype \n Message: $message \n\n IP Address: $ip";
if (mail($to, $subject, $body)) {
header('Location: /thanks');
exit; // added that to prevent further execution
}
}
else{
echo "Fill in all fields";
}
Вы можете дополнительно добавить флажок и проверить, установлен ли он с isset()
и обращаться с этим соответственно.
Тем не менее, вы должны использовать полные заголовки, как указано в mail()
руководство. В противном случае вы можете его не получить или его также можно рассматривать как спам.
Полный заголовок означает наличие действительного From
адрес электронной почты.
Пример из руководства:
<?php
$to = '[email protected]';
$subject = 'the subject';
$message = 'hello';
$headers = 'From: [email protected]' . "\r\n" .
'Reply-To: [email protected]' . "\r\n" .
'X-Mailer: PHP/' . phpversion();
mail($to, $subject, $message, $headers);
Вам также следует создать запись SPF, но это выходит за рамки этого вопроса.
Других решений пока нет …