Проблема со спамом в контактной форме PHP

Так что недавно я исправил свою контактную форму на моем сайте, но у меня есть проблема. Люди могут отправлять мне электронные письма без необходимости помещать что-либо в поля контактной формы.

Поэтому многие могут просто нажать кнопку «Отправить», не вводя ничего, что действительно раздражает.

В любом случае, чтобы это исправить?

Вот мой PHP-код: https://hastebin.com/ukowawovab.pl

Вот мой HTML-код: https://hastebin.com/hisayacuji.xml

Спасибо!
TrifleTower

1

Решение

Как я уже говорил в комментариях, проверьте наличие пустых полей.

Даже с 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, но это выходит за рамки этого вопроса.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]