Задать вопрос
@eltor

В какую директорию положить файл обработчик mail.php в wordpress?

Столкнулся с проблемой на wordpress, на сайте поставил всплывающее окно ajax, форму обратной связи, есть обработчик на php файл mail.php. форма не срабатывает и не скидывает на почту email и имя клиента.
фрагменты кода
js/script.js
$(document).ready(function () {
    $("form").submit(function () {
        // Получение ID формы
        var formID = $(this).attr('id');
        // Добавление решётки к имени ID
        var formNm = $('#' + formID);
        $.ajax({
            type: "POST",
            url: './mail.php',
            data: formNm.serialize(),
            success: function (data) {
                // Вывод текста результата отправки
                $(formNm).html(data); 
            },
            error: function (jqXHR, text, error) {
                // Вывод текста ошибки отправки
                $(formNm).html(error);         
            }
        });
        return false;
    });
});

mail.php
<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
    if (isset($_POST['name'])) {$name = $_POST['name'];}
    if (isset($_POST['phone'])) {$phone = $_POST['phone'];}
    if (isset($_POST['formData'])) {$formData = $_POST['formData'];}

    $to = "demo@demo.ru"; /*Укажите адрес, га который должно приходить письмо*/
    $sendfrom   = "smart-landing@yandex.ru"; /*Укажите адрес, с которого будет приходить письмо, можно не настоящий, нужно для формирования заголовка письма*/
    $headers  = "From: " . strip_tags($sendfrom) . "\r\n";
    $headers .= "Reply-To: ". strip_tags($sendfrom) . "\r\n";
    $headers .= "MIME-Version: 1.0\r\n";
    $headers .= "Content-Type: text/html;charset=utf-8 \r\n";
    $subject = "$formData";
    $message = "$formData<br> <b>Имя пославшего:</b> $name <br><b>Телефон:</b> $phone";
    $send = mail ($to, $subject, $message, $headers);
    if ($send == 'true')
    {
    echo '<center><p class="success">Спасибо за отправку вашего сообщения!</p></center>';
    }
    else 
    {
    echo '<center><p class="fail"><b>Ошибка. Сообщение не отправлено!</b></p></center>';
    }
} else {
    http_response_code(403);
    echo "Попробуйте еще раз";
}
?>


что я не так делаю? mail.php побывал класть и в папку темы и в корневой каталог public_html не срабатывает. Или я не правильно прописываю путь в script.js
  • Вопрос задан
  • 685 просмотров
Подписаться 1 Средний Комментировать
Решения вопроса 1
PavelK
@PavelK
Без точки и в корневую. Проверьте в консоле разработчика, вкладка network что бы скрипт действительно делал запрос.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
HeadOnFire
@HeadOnFire
PHP, Laravel & WordPress Evangelist
1. Для пути лучше используйте абсолютный URL, надежнее будет.
2. А вот это:
if (isset($_POST['name'])) {$name = $_POST['name'];}
    if (isset($_POST['phone'])) {$phone = $_POST['phone'];}
    if (isset($_POST['formData'])) {$formData = $_POST['formData'];}

вместе с вот этим:
$message = "$formData<br> <b>Имя пославшего:</b> $name <br><b>Телефон:</b> $phone";

вообще круто. Вы же слышали хоть что-то про санитизацию входящих данных? А то пишете подобное, а потом клиенты ко мне приходят со слезами на глазах "наш сайт взломали, сколько будет стоить почистить сайт от вирусов"... Я ж не резиновый, на всех не хватит. Почитывайте хоть иногда про безопасность.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы