@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>
  • Вопрос задан
  • 699 просмотров
Решения вопроса 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.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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