我正在使用此脚本登录正在开发的站点:http://www.php-login.net/
我正在使用简单的登录,如下所示:
require_once("config/db.php");
// load the login class
require_once("classes/Login.php");
// create a login object.
$login = new Login();
// ... ask if we are logged in here:
if ($login->isUserLoggedIn() == true) {
$userid = $_SESSION['user_id'];
$time = Users::getData($userid);
include("views/logged_in.php");
} else {
// the user is not logged in...
include("views/not_logged_in.php");
}
该脚本将登录 ID 保存在会话中,然后我将其用作函数 getData 中的参数。这工作正常,问题是当我a) 重新审视页面b) 在浏览器中使用前进/后退按钮进行导航。
我不断收到"确认重新发送表单..."消息弹出,这当然不是很用户友好。
我怎样才能避免这种情况?
您必须
使用header
并在发布表单后重定向网站。
如果用户登录,就会发生这种情况,登录后他立即单击注销。然后,当您在浏览器中按后退按钮时,会发送带有 $_POST 的日志记录数据的表单,浏览器会询问您是否要再次发送该表单。
使用此解决方案可避免再次发送表单(单击后退按钮或按 F5(刷新)时):
当您处理包含登录数据的表单时,请重定向到同一页面或主页(它在您身上)。用
header("HTTP/1.1 302 Found");
header('Location: '.$url_to_redirect);
然后,当他单击后退按钮或刷新页面时,它不会再次发送登录数据,因此不会再次处理登录。