0

друзья!

В php разбираюсь очень плохо, поэтому прошу вас помочь с настройкой отправки формы через плагин phpMailer.

Вот сайт, на котором я пытаюсь настроить отпавку формы из 2 полей с именем и телефоном.

При отправке выскакивает ошибка 500, скрин 1 прилагаю: введите сюда описание изображения Скрин 2: введите сюда описание изображения

Я не эксперт, но походу какае-то ошибка в php файле, код прилагаю.

"use strict"

document.addEventListener('DOMContentLoaded', function() { const form = document.getElementById('form'); form.addEventListener('submit', formSend);

async function formSend(e) {
    e.preventDefault();

    let error = formValidate(form);

    let formData = new FormData(form);

    if (error === 0) {
        form.classList.add('_sending');
        let response = await fetch('sendmail.php', {
            method: 'POST',
            body: formData
        });

        if (response.ok) {
            let result = await response.json();
            alert(result.message);
            form.reset();
            form.classList.remove('_sending');   
        } else {
            alert('Ошибка');
            form.classList.remove('_sending');
        }

    } else {
        alert('Заполните обязательные поля');
    }
}

function formValidate(form) {
    let error = 0;
    let formReq = document.querySelectorAll('._req');

    for (let i = 0; i < formReq.length; i++) {
        const input = formReq[i];
        formRemoveError(input);

        if(input.classList.contains('_req') && input.value === '') {
            formAddError(input);
            error++;
        }
    }
    return error;
}

function formAddError(input) {
    input.parentElement.classList.add('_error');
    input.classList.add('_error');
}

function formRemoveError(input) {
    input.parentElement.classList.remove('_error');
    input.classList.remove('_error');
}

});

<?php
    use PHPMailer\PHPMailer\PHPMailer;
    use PHPMailer\PHPMailer\Exception;

    require 'phpmailer/src/Exception.php';
    require 'phpmailer/src/PHPMailer.php';

    $mail = new PHPMailer(true);
    $mail->CharSet = 'UTF-8';
    $mail->setLanguage('ru', 'phpmailer/language/');
    $mail->IsHTML(true);

    //От кого письмо
    $mail->setFrom('graffiti211@yandex.ru', 'Оле Арена');
    //Кому отправить
    $mail->addAddress('graffiti211@yandex.ru');
    //Тема письма
    $mail->Subject = 'Потенциальный клиент';

    //Тело письма
    $body = '<h1>Сэр, Вам письмо!</h1>';

    if (trim(!empty($_POST['name']))) {
        $body. = '<p><strong>Имя: </strong> '.$_POST['name'].'</p>';  
    }

    if (trim(!empty($_POST['phone']))) {
        $body. = '<p><strong>Телефон: </strong> '.$_POST['phone'].'</p>';  
    }

    $mail->Body = $body;

    //Отправляем 
    if (!$mail->send()) {
        $message = 'Ошибка';
    } else {
        $message = 'Данные отправлены!';
    }

    $response = ['message' => $message];

    header('Content-type: application/json');
    echo json_encode($response);
?>
<form action="#" class="contactform" id="form">
                    <label for="field-1" class="field-1_label">Ваше имя</label>
                    <input type="text" name="name" placeholder="Как вас зовут" class="contactform-name _req" id="field-1" maxlength="40">
                    <label for="field-2" class="field-2_label">Ваш телефон</label>
                    <input type="text" name="phone" placeholder="Ваш телефон" class="contactform-phone _req _phone" id="field-2">
                    <input type="submit" value="Арендовать зал" class="contactform-button">
                </form>

Все файлы сайта на GitHub.

Буду благодарен за помощь!

Rhyman
  • 1
  • ошибка 500 - ошибка на сервере. ↑↑↑ открывайте вопрос, читайте все пункты... начните с вывода ошибок и чтения логов – Алексей Шиманский Nov 13 '22 at 13:47
  • @АлексейШиманский благодарю за полезную ссылку. Лог ошибок на сервере показал, что проблема в синтаксисе проверки на полненность полей. $body. и = оказывается пишется слитно (lol). – Rhyman Nov 13 '22 at 15:36
  • скорее я бы сказал $body и . должны быть отдельно , а слитно должно быть только .= – Алексей Шиманский Nov 13 '22 at 15:51
  • @АлексейШиманский Ну да, все верно. – Rhyman Nov 14 '22 at 16:07

0 Answers0