PHP не будет отображаться, если поле ввода пустое; с рисунком PRG

Я немного озадачен тем, как реализовать шаблон Post/Redirect/Get в PHP. Я видел несколько ответов, в которых говорилось просто добавить функцию заголовка после отправки формы; Я сделал это, но после проверки, являются ли поля ввода пустыми, он ничего не печатает, хотя я добавил функцию заголовка после запуска кода. Я просто не могу найти, как интегрировать это, поэтому я спрашиваю в любом случае.

<?php

require '../BACKEND/DB/DB_CONN.php';

if(isset($_POST['submit-register'])) {

    if(empty($_POST['email'])) {
        echo 'Email cannot be nothing.';
    }

    header("Location: index.php");
    die();
}

if(isset($_POST['submit-login'])) {

    if(empty($_POST['loginUser'])) {
        echo 'Field Empty.';
    }

    header("Location: index.php");
    die();

}

?>

<div class="forms">
        <form method="post" action="index.php" role="form" class="forms-inline register ">
        <h4>Register</h4>
            <input type="text" name="email" placeholder="Email Address" autocomplete="off" />
            <input type="text" name="username" placeholder="Username" autocomplete="off" />
            <input type="password" name="password" placeholder="Password" autocomplete="off" />
            <input type="submit" name="submit-register" value="Register" role="button" name="login-btn" />
        </form>
        <form method="post" action="index.php" role="form" class="forms-inline login ">
        <h4>Login</h4>
            <input type="text" name="loginUser" placeholder="Username" />
            <input type="password" name="loginPass" placeholder="Password" />
            <input type="submit" name="submit-login" value="Register" role="button" />
        </form>
    </div>

Я писал код, но, как я обнаружил, он не работает, я спрашиваю, как это исправить и как безопасно реализовать Post/Redirect/Pattern, и я знаю, что он работает.

2 ответа

Увидеть submit-register Операция POST проверяет и перенаправляет на index.php, передавая сообщение проверки. Вам нужно получить сообщение, переданное из метода заголовка.

В шаблоне PRG, когда вы выполняете операцию POST с данными, но когда вы перенаправляете и выполняете GET после публикации, чтобы поддерживать PRG, вы должны передавать свои данные последнему URL-адресу GET назначения.

В вашем коде, смотрите оба способа, которые я сделал, первый передает ваше сообщение в индекс, а второй не PRG, когда происходит ошибка при проверке.

//PRG..........................................
if(isset($_POST['submit-register'])) {

    if(empty($_POST['email'])) {
        echo 'Email cannot be nothing.';
        $msg = "Email cannot be nothing";
    }

    header("Location: index.php?msg=$msg");
    //Get your this message on index by $_GET //PRG

}
//Not full PRG with no passing data to destination.........................
if(isset($_POST['submit-login'])) {

    if(empty($_POST['loginUser'])) {
        echo 'Field Empty.';
    }
    else{
        header("Location: index.php");
    }

}

Обратите внимание, что на методе заголовка не должно быть ничего напечатанного на странице. Это означает просто отсутствие эха перед методом заголовка.

Смотрите, первый - PRG, а второй - также PRG, но не с вашими данными, переданными по назначению.

header("Location: index.php?msg=$msg");

Использование заголовка (путь) сбрасывает страницу. Следовательно, любые напечатанные ранее эхосигналы будут отброшены.

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