@proclub

Почему приходят порой пустые заявки?

Вопрос следующий, вот код обработчика, а так же валидация формы через required
Иногда прилетают пустые заявки, в чем может быть причина ?
И как это можно исправить ?

Собственно сам код :
<?
    //Принимаем постовые данные
    $name=$_POST['name'];
    $phone=$_POST['phone'];
    $utm_source = $_POST['utm_source'];
    $utm_medium = $_POST['utm_medium'];
    $utm_term = $_POST['utm_term'];
    $utm_content = $_POST['utm_content'];
    $utm_campaign = $_POST['utm_campaign'];



     
    //Тут указываем на какой ящик посылать письмо
    $to      = 'emailadress@mail.ru, emailadress2@mail.ru, emailadress3@mail.ru, emailadress4@mail.ru, emailadress5@mail.ru, emailadress6@mail.ru';
    
    //Далее идет тема и само сообщение
    $subject = "Заявки с сайта ";
    $message = "
    Письмо отправлено из моей формы gruppa-m.ru.<br />
    Пользователь указал:<br />Имя: ".htmlspecialchars($name)."<br />
    Телефон: ".htmlspecialchars($phone)."<br />
    utm_source = ".htmlspecialchars($utm_source)." <br />
    utm_medium = ".htmlspecialchars($utm_medium)." <br />
    utm_term = ".htmlspecialchars($utm_term)." <br />
    utm_campaign = ".htmlspecialchars($utm_campaign)." <br />
    utm_content = ".htmlspecialchars($utm_content);
    $headers = "From: translate-lang.bid <site-email@mysite.ru>\r\nContent-type: text/html; charset=utf8 \r\n";
    mail ($to, $subject, $message, $headers);
?> 

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <title></title>
    <link rel="stylesheet" href="css/tnx.css">
</head>
<body>
    <h1>Заявка принята</h1>
    <p>Менеджер уже обрабатывает Вашу заявку. <br>Спасибо, что выбрали нас. </p>


    <a class="button" href="index.php">Вернуться на сайт</a>
</body>
</html>
  • Вопрос задан
  • 101 просмотр
Решения вопроса 1
ivan_zhuck
@ivan_zhuck
Валидация должна быть не только на фронте, но и на беке. Поскольку POST запрос можно отправить не только через форму, но и напрямую, обратившить по адресу обработчика формы. Отправлять такой запрос могут спам-роботы, ушлые пользователи, которые ищут уязвимости и т.д. В самом примитивном случае можно сделать так:

$name = !empty($_POST['name'])?$_POST['name']:false;
$phone = !empty($_POST['phone'])?$_POST['phone']:false;

if($name and $phone){
      //тут отправляем форму
}else{
     //тут сообщаем об ошибке
}


В не примитивном случае, должна быть более строгая валидация и в клиентской части приложения и в серверной. Например: в имени могу быть только буквы,пробелы и дефисы, а строка номера телефона после очистки от прочих символов должна содержать 10 числел. Сама форма должна быть защищена от CSRF, XSS и прочих типовых уязвимостей. Если форма публичная (например форма контактов, как в вашем случае) должен присутствовать механизм от защиты отправки формы ботами, например reCAPTCHA.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы