Задать вопрос
Ответы пользователя по тегу PHP
  • Форма обратной связи не сохраняет данные. Присылает пустые письма. Выдает ошибку "Name is required Email is required Message is required". почему?

    @Kuzmin_A
    Full stack web developer
    form-process.php

    <?php
    
    $errorMSG = "";
    
    // NAME
    if (empty($_POST["name"])) {
        $errorMSG = "Name is required ";
    } else {
        $name = $_POST["name"];
    }
    
    // EMAIL
    if (empty($_POST["email"])) {
        $errorMSG .= "Email is required ";
    } else {
        $email = $_POST["email"];
    }
    
    // MESSAGE
    if (empty($_POST["message"])) {
        $errorMSG .= "Message is required ";
    } else {
        $message = $_POST["message"];
    }
    
    /*
     если оставить ваш код здесь то письмо будет отправляться в любом случае
     даже если заполнены не все данные формы
    */
    
    // if no errors
    // prepare mail body and send
    if ($errorMSG == "") {
        $EmailTo = "Suvenirka2014@inbox.ru";
        $Subject = "New Message Received";
    
        // prepare email body text
        $Body = "";
        $Body .= "Name: ";
        $name = "";
        $Body .= $name;
        $Body .= "\n";
        $Body .= "Email: ";
        $email = "";
        $Body .= $email;
        $Body .= "\n";
        $Body .= "Message: ";
        $message = "";
        $Body .= $message;
        $Body .= "\n";
    
        // send email
        $success = mail($EmailTo, $Subject, $Body, "From:" . $email);
        // плохая идея указывать `"From:" . $email`, т.к. почтовики с 99% вероятностью
        // не примут такие письма...
        // например, пользователь указал email example@gmail.com, с домена gmail.com
        // разрешено отправлять письма с определенных ip-адресов которые прописаны в 
        // spf записи. Это не только gmail, но также яндекс, mail.ru, rambler, etc...
    
        if ($success) {
            echo "success";
        } else {
            echo "Something went wrong :(";
        }
    } else {
        if ($errorMSG == "") {
            echo "Something went wrong :(";
        } else {
            echo $errorMSG;
        }
    }
    Ответ написан
    Комментировать
  • Как установить reCAPTCHA v3, чтобы форма обратной связи не ломалась?

    @Kuzmin_A
    Full stack web developer
    Т.к. реального кода нет, предположу, что
    появляется новая белая страница с надписью "письмо успешно отправлено"
    форма отправляется ajax запросом и:
    1. обработчик отправки формы бал привязан к кнопке, а НЕ на отправку формы (как же надоели эти костыли)
    2. или некорректно отрабатывает submit формы и тогда необходимо использовать программный вызов reCaptcha
    Ответ написан
    Комментировать