У меня есть ошибка php, которая отображается без причины, и я хочу найти способ исправить ошибку или удалить ее

Notice: Undefined variable: error in /storage/ssd5/047/2981047/public_html/inc/sendEmail.php on line 47

Ok эта ошибка отображается, когда я отправляю электронное письмо со своего собственного сайта... Я хочу найти решение этой проблемы, поскольку ошибка отображается на самом сайте, а не в консоли и т. д.

Сообщение вверху — это то, что отображается на моем сайте, когда форма заполнена правильно...

Пожалуйста, не у меня нет опыта в PHP.

    <?php

    $siteOwnersEmail = '*********************';


    if ($_POST) {

       $name = trim(stripslashes($_POST['contactName']));
       $email = trim(stripslashes($_POST['contactEmail']));
       $subject = trim(stripslashes($_POST['contactSubject']));
       $contact_message = trim(stripslashes($_POST['contactMessage']));

       // Check Name
            if (strlen($name) < 2) {
                $error['name'] = "Please enter your name.";
        }
        // Check Email
        if (!preg_match('/^[a-z0-9&\'\.\-_\+]+@[a-z0-9\-]+\.([a-z0-9\-]+\.)*+[a-z]{2}/is', $email)) {
            $error['email'] = "Please enter a valid email address.";
        }
        // Check Message
        if (strlen($contact_message) < 15) {
            $error['message'] = "Please enter your message. It should have at least 15 characters.";
        }
       // Subject
        if ($subject == '') { $subject = "Contact Form Submission"; }

       // Set Message
       $message = "";
       $message .= "Email from: " . $name . "<br />";
       $message .= "Email address: " . $email . "<br />";
       $message .= "Message: <br />";
       $message .= $contact_message;
       $message .= "<br /> ----- <br /> This email was sent from your site's     contact form. <br />";

       // Set From: header
       $from =  $name . " <" . $email . ">";

       // Email Headers
        $headers = "From: " . $from . "\r\n";
        $headers .= "Reply-To: ". $email . "\r\n";
        $headers .= "MIME-Version: 1.0\r\n";
        $headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n";


       //Error Starts is her if im not mistaken....


       if (!$error) {

          ini_set("sendmail_from", $siteOwnersEmail); // for windows server
          $mail = mail($siteOwnersEmail, $subject, $message, $headers);

            if ($mail) { echo "OK"; }
          else { echo "Something went wrong. Please try again."; }

        } # end if - no validation error

        else {

            $response = (isset($error['name'])) ? $error['name'] . "<br /> \n" : null;
            $response .= (isset($error['email'])) ? $error['email'] . "<br /> \n" : null;
            $response .= (isset($error['message'])) ? $error['message'] . "<br />" : null;

            echo $response;

        } # end if - there was a validation error

    }



    ?>

Вы размыли переменную $siteOwnersEmail, которая находится на 3-й строке, прежде чем отправить это сообщение? если это были не вы, то вам нужно написать там адрес электронной почты отправителя, возможно

sigmaforward 08.04.2019 08:49

В верхней части вашего скрипта объявите пустой массив $error = []; или вместо проверки (!error) проверьте isset($error)

greed chikara 08.04.2019 09:05
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
2
60
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Вы должны присвоить значения по умолчанию для переменной $error, например

$error = '';

Спасибо за помощь, дружище, я ценю это.

Hadi Hassan 08.04.2019 17:05
Ответ принят как подходящий

Когда вы вызываете if (!$error) {, переменная $error может быть не создана — она появляется только тогда, когда тест длины или тест регулярного выражения терпят неудачу. Поскольку при создании переменная $error кажется массивом, вам следует создать пустую переменную по умолчанию. Вы также должны проверить, доступны ли другие переменные POST, прежде чем пытаться их использовать, иначе потенциально могут возникнуть подобные ошибки.

if ( $_SERVER['REQUEST_METHOD']=='POST' && isset( $_POST['contactName'],$_POST['contactEmail'],$_POST['contactSubject'],$_POST['contactMessage'] ) ){

    $error=[]; # default, empty error variable


    if (strlen($name) < 2) $error['name'] = "Please enter your name.";
    /* etc */


    if ( empty( $error ) ) {
        /* try to send email */

    } else {
        /* errors happened - let user know or perform other tasks */

    }
}

Другие вопросы по теме