Rhyman_baby
@Rhyman_baby

Ошибка 500 при отправке данных формы при помощи phpMailer. Поможете?

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

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

При отправке выскакивает ошибка 500, скрин 1 прилагаю:
6370f3bbeffe3210150173.jpeg
Скрин 2:
6370f3d105915298961777.jpeg
Я не эксперт, но походу какае-то ошибка в php файле, код прилагаю.

HTML
<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>

JavaScript
"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
<?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);
?>

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

Буду благодарен за помощь!
  • Вопрос задан
  • 365 просмотров
Решения вопроса 1
@AUser0
Чем больше знаю, тем лучше понимаю, как мало знаю.
См. файл error.log вашего HTTP сервера, в котором исполняется этот PHP файл. Вот там и увидите ошибку в этом PHP файле.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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