Мое приложение – простая страница входа. Когда он терпит неудачу, я печатаю сообщение об ошибке. Мой вопрос: почему, когда я перезагружаю страницу, сообщение снова печатается? Как я могу это исправить? Код работает нормально, я сделал еще один php-файл, выполняющий проверку и подключение базы данных.
<?php require_once("include/database.php"); if(isset($_POST['submit'])) { connect_bookstore(); // custom function $spassword = sha1($_POST['password']); $username = $_POST['username']; if ( checkpassword($username,$spassword) ) { //custom function header('Location:insert.php'); exit; } else { $message = "Login failed!"; } } ?>
Внутри тела html.
<?php if (isset($message)) { echo $message; } ?>
<?php session_start(); require_once("include/database.php"); if(isset($_POST['submit'])) { connect_bookstore(); // custom function $spassword = sha1($_POST['password']); $username = $_POST['username']; if ( checkpassword($username,$spassword) ) { //custom function header('Location:insert.php'); exit; } else { $_SESSION['message'] = "Login failed!"; header('location: /yourfile.php'); exit; } } if(isset($_SESSION['message'])) { echo $_SESSION['message']; unset($_SESSION['message']); } ?>
в<?php session_start(); require_once("include/database.php"); if(isset($_POST['submit'])) { connect_bookstore(); // custom function $spassword = sha1($_POST['password']); $username = $_POST['username']; if ( checkpassword($username,$spassword) ) { //custom function header('Location:insert.php'); exit; } else { $_SESSION['message'] = "Login failed!"; header('location: /yourfile.php'); exit; } } if(isset($_SESSION['message'])) { echo $_SESSION['message']; unset($_SESSION['message']); } ?>
с<?php session_start(); require_once("include/database.php"); if(isset($_POST['submit'])) { connect_bookstore(); // custom function $spassword = sha1($_POST['password']); $username = $_POST['username']; if ( checkpassword($username,$spassword) ) { //custom function header('Location:insert.php'); exit; } else { $_SESSION['message'] = "Login failed!"; header('location: /yourfile.php'); exit; } } if(isset($_SESSION['message'])) { echo $_SESSION['message']; unset($_SESSION['message']); } ?>
По сути, да, пост / перенаправление / получить … но иногда простое объяснение лучше.
Я использую сеансы для хранения флеш-сообщений, а затем отображаю их так.
Это потому, что вы повторно отправляете одни и те же данные POST при обновлении, если вы выполняете запрос GET, который вы увидите в URL-адресе, ваши параметры, которые вы передаете, есть, поэтому, если вы обновите эти параметры, они снова будут отправлены. То же самое с POST.
Когда вы перезагружаете страницу, браузер отправляет тот же запрос, который он отправил на теоретическую страницу.
Вы хотите POST-Redirect-GET .