我正在使用此脚本登录开发中的网站: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)使用浏览器中的前进/后退按钮进行导航。
我不断收到"确认重新发送表单..."消息弹出,这当然不是非常用户友好。
我该如何避免这种情况?
答案 0 :(得分:1)
发布表单后,您必须使用header
并重定向网站。
如果用户登录,则会发生这种情况,登录后他点击退出。然后当您在浏览器中按下后退按钮时,会发送包含其日志记录的$ _POST数据的表单,浏览器会询问您是否要再次发送该表单。
使用此解决方案可以避免再次发送表单(单击后退按钮或按下F5(刷新)时):
当您使用登录数据处理表单时,请重定向到同一页面或主页(它在您身上)。使用
header("HTTP/1.1 302 Found");
header('Location: '.$url_to_redirect);
然后,当他点击后退按钮或刷新页面时,它不会再次发送登录数据,因此它不会再次处理登录。