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");
Использование заголовка (путь) сбрасывает страницу. Следовательно, любые напечатанные ранее эхосигналы будут отброшены.