避免“登录后重新发送表单确认

时间:2013-11-08 09:13:57

标签: php session login

我正在使用此脚本登录开发中的网站: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)使用浏览器中的前进/后退按钮进行导航。

我不断收到"确认重新发送表单..."消息弹出,这当然不是非常用户友好。

我该如何避免这种情况?

1 个答案:

答案 0 :(得分:1)

发布表单后,您必须使用header并重定向网站。

如果用户登录,则会发生这种情况,登录后他点击退出。然后当您在浏览器中按下后退按钮时,会发送包含其日志记录的$ _POST数据的表单,浏览器会询问您是否要再次发送该表单。

使用此解决方案可以避免再次发送表单(单击后退按钮或按下F5(刷新)时):

当您使用登录数据处理表单时,请重定向到同一页面或主页(它在您身上)。使用

header("HTTP/1.1 302 Found");
header('Location: '.$url_to_redirect);

然后,当他点击后退按钮或刷新页面时,它不会再次发送登录数据,因此它不会再次处理登录。