Я пытаюсь проверить форму, но ошибка с сообщением и header () не будет работать - PullRequest
0 голосов
/ 03 июня 2018

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

Я пытаюсь создать контактную форму с внутренней проверкой php.Я обновлю HTML-форму, чтобы включить проверку на стороне пользователя, когда у меня будет работать проверка на стороне пользователя, поскольку я в конечном итоге хочу и то, и другое.

Форма контакта сама работает с функцией mail (), однако проверка по какой-то причине не работает.Я хочу, чтобы, если поле оставлено пустым, было опубликовано уведомление «Все поля обязательны для заполнения», а если в поле электронной почты нет знака (@), на нем будет отображаться «В сообщении электронной почты должен быть знак (@)».

Для этого у меня есть входные данные формы HTML с указанными именами, а затем в PHP у меня есть проверка, которая включает в себя заголовок («Location: email-form2.php»);перенаправить обратно на ту же страницу, если поля формы не верны.Однако, независимо от того, что я пробую, перенаправление с ошибкой не происходит, и оно просто перенаправляет на страницу действия «email-action.php», отправляет электронное письмо и затем завершается.

Что я делаю неправильночто проверка не работает?

Вот код 'email-form2.php':

<?php 
session_start();

    if ( isset($_POST['name']) && isset($_POST['email']) && isset($_POST['subject']) && isset($_POST['message']) ) {
        if ( strlen($_POST['name']) < 1 || strlen($_POST['email']) < 1 || strlen($_POST['subject']) < 1 || strlen($_POST['message']) < 1) {
            $_SESSION['error'] = "All fields are required";
            header("Location: email-form2.php");
            return;
        }   

        elseif (strpos($_POST['email'], '@' ) == false) {
            $_SESSION['error'] = "Email must have an at-sign (@)";
            header("Location: email-form2.php");
            return;
        } 
        else {
            return false;
        }
    }

?>

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf8">
        <title>Email Tester</title>
    </head>
    <body>
       <?php

        if ( isset($_SESSION['error']) ) {
            echo('<p style="color: red;">'.$_SESSION['error']."</p>\n");
            unset($_SESSION['error']);
            }
        ?>
        <form action="email-action.php" method="POST">
            <label for="name">Enter your name: </label><br>
            <input type="text" id="name" name="name"><br>
            <label for="email">Enter your email: </label><br>
            <input type="text" id="email" name="email"><br>
            <label for="subject">Subject:</label><br>
            <input type="text" id="subject" name="subject"><br>
            <label for="message">Enter your message:</label><br>
            <input type="text" id="message" name="message"><br>
            <input type="submit" value="Submit">

        </form>
    </body>
</html>

Файл 'email-action.php' находится в той же папке,вот код:

 <?php

        $to = "example@example.com";
        $name = $_POST['name'];
        $email = $_POST['email'];
        $subject = $_POST['subject'];
        $message = $_POST['message'];
        $headers = "From: $name <$email>";

        mail($to, $subject, $message, $headers);


        ?>


<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf8">
        <title>Email Tester</title>
    </head>
    <body>
        <h1>Email Sent!</h1>
        <?php 
        if ( isset($_SESSION['error']) ) {
            echo('<p style="color: red;">'.$_SESSION['error']."</p>\n");
            unset($_SESSION['error']);
            }
        ?>
    </body>
</html>

1 Ответ

0 голосов
/ 03 июня 2018

Как я уже сказал в комментарии

 <form action="email-form2.php" 

в html-форме email-form2.php исправит вашу проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...