我的应用程序是一个简单的登录页面。当它失败时,我打印一条错误消息。我的问题是,为什么当我重新加载页面时,邮件再次打印出来?我该如何解决这个问题? 代码工作正常,我已经做了另一个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;
}
?>
答案 0 :(得分:12)
<?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']);
}
?>
从根本上说,是的,发布/重定向/获取......但有时候一个简单的解释会更好。
我使用会话来存储flash消息,然后像这样显示它们。
答案 1 :(得分:1)
这是因为您在刷新时重新发送相同的POST数据,如果您执行GET请求,您会在URL中注意到您传递的参数在那里,因此如果刷新这些参数将再次发送。与POST相同。
答案 2 :(得分:0)
当您重新加载页面时,浏览器将发送它为原始页面发送的相同请求。