@Eithenhard

Почему при отправке формы 500 ошибка?

При попытке отправить форму с сайта, выползает 500 ошибка.

ошибка в браузере
5c922cda85971108524123.jpeg

скрипт
<?php

require_once __DIR__ . '/mailer/Validator.php';
require_once __DIR__ . '/mailer/ContactMailer.php';

if (!Validator::isAjax() || !Validator::isPost()) {
	echo 'Доступ запрещен!';
	exit;
}

$name = isset($_POST['name']) ? trim(strip_tags($_POST['name'])) : null;
$phone = isset($_POST['phone']) ? trim(strip_tags($_POST['phone'])) : null;

if (empty($name) || empty($phone)) {
	echo 'Все поля обязательны для заполнения.';
	exit;
}

if (!Validator::isValidPhone($phone)) {
	echo 'Телефон не соответствует формату.';
	exit;
}

if (ContactMailer::send($name, $phone)) {
	echo htmlspecialchars($name) . ', ваше сообщение успешно отправлено.';
} else {
	echo 'Произошла ошибка! Не удалось отправить сообщение.';
}
exit;

скрипт js
jQuery(document).ready(function($) {

    // Добавляем маску для поля с номера телефона
    $('#phone').mask('+7 (999) 999-99-99');

    // Проверяет отмечен ли чекбокс согласия
    // с обработкой персональных данных
    $('#check').on('click', function() {
        if ($("#check").prop("checked")) {
            $('#button').attr('disabled', false);
        } else {
            $('#button').attr('disabled', true);
        }
    });

    // Отправляет данные из формы на сервер и получает ответ
    $('#contactForm').on('submit', function(event) {
        
        event.preventDefault();

        var form = $('#contactForm'),
            button = $('#button'),
            answer = $('#answer'),
            loader = $('#loader');

        $.ajax({
            url: 'handler.php',
            type: 'POST',
            data: form.serialize(),
            beforeSend: function() {
                answer.empty();
                button.attr('disabled', true).css('margin-bottom', '20px');
                loader.fadeIn();
            },
            success: function(result) {
                loader.fadeOut(300, function() {
                    answer.text(result);
                });
                form.find('.form-control').val(' ');
                button.attr('disabled', false);
            },
            error: function() {
                loader.fadeOut(300, function() {
                    answer.text('Произошла ошибка! Попробуйте позже.');
                });
                button.attr('disabled', false);
            }
        });

    });

});


validator.php
<?php
/**
 * Validator: класс-хелпер, валидацирует данные пришедшие от пользователя
 */
class Validator
{
	/**
     * Проверяет валидный ли E-mail, если да, то
     * возвращает TRUE, в противном случае FALSE.
     * @param string $email
     * @return boolean
     */
//	public static function isValidEmail($email)
//	{
//		return filter_var($email, FILTER_VALIDATE_EMAIL);
//	}

	/**
     * Проверяет валидный ли E-mail, если да, то
     * возвращает TRUE, в противном случае FALSE.
     * @param string $phone
     * @return boolean
     */
	public static function isValidPhone($phone)
	{
		return preg_match("#\+7 \(\d{3}\) \d{3}\-\d{2}-\d{2}#", $phone);
	}

	/**
     * Проверяет пришли ли данные POST-запросом, если да,
     * то возвращает TRUE, в противном случае FALSE.
     * @return boolean
     */
	public static function isPost()
	{
		return $_SERVER['REQUEST_METHOD'] === 'POST';
	}

	/**
     * Проверяет пришли ли данные Ajax-запросом, если да,
     * то возвращает TRUE, в противном случае FALSE.
     * @return boolean
     */
	public static function isAjax()
	{
		return isset($_SERVER['HTTP_X_REQUESTED_WITH']) && $_SERVER['HTTP_X_REQUESTED_WITH'] === 'XMLHttpRequest';
	}
}


contactmailer.php
<?php

use PHPMailer\PHPMailer\Exception;
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP;

require_once __DIR__ . '/PHPMailer/src/Exception.php';
require_once __DIR__ . '/PHPMailer/src/PHPMailer.php';
require_once __DIR__ . '/PHPMailer/src/SMTP.php';
/**
 * Mailer: класс-хелпер, отправляет почту администратору
 */
class ContactMailer
{
	/**
     * E-mail отправителя
     * @var string
     */
    private static $emailFrom = 'send@yandex.ru';
    /**
     * E-mail получателя
     * @var string
     */
    private static $emailTo = '';

    /**
     * Отправляет писмо, если письмо отправлено,
     * возвращает TRUE, в противном случае FALSE.
     * @param string $name
     * @param string $email
     * @param string $phone
     * @param string $message
     * @return boolean
     */
    public static function send($name, $phone)
    {
		// Формируем тело письма
		$body = "Имя: " . $name .  "\nТелефон: " . $phone . ;

		// Создаем объект PHPMailer
        $mailer = new PHPMailer();
        // Настройки подключения
        $mailer->isSMTP();
        $mailer->Host = ' smtp.yandex.ru';
        $mailer->SMTPAuth = true;
        $mailer->Username = self::$emailFrom;
        $mailer->Password = 'XXXXXXXX';
        $mailer->SMTPSecure = 'ssl';
        $mailer->Port = '465';

        $mailer->CharSet = 'UTF-8';
        $mailer->setFrom(self::$emailFrom, 'Имя отправителя');
        $mailer->addAddress(self::$emailTo);
        $mailer->isHTML(false);
        $mailer->Subject = 'Заполнена форма обратной связи';
        $mailer->Body = $body;
        
        if ($mailer->send()) {
        	return true;
        }
    	return false;
    }
}
  • Вопрос задан
  • 263 просмотра
Пригласить эксперта
Ответы на вопрос 1
@glite
var/log/httpd2/error.log в зависимости от дистрибутива и операционной системы!!!
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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