说明:PHP挑战响应登录脚本,如何清除会话过期状态-


PHP challenge response login script, how to clear session expired status?

我使用PHP挑战响应脚本,以方便我的用户登录到我的网站。几年前我在网上找到了这段代码,所以我没有自己写,因此我不太理解它。

无论如何,它一直工作良好,但我注意到,当一个用户的会话到期,有时他们无法再次登录,不得不诉诸于使用不同的浏览器。这个问题似乎在一段时间后自行解决了,但我不知道为什么或如何。

有时,这就像关闭浏览器并重新打开它一样简单,但有时这也行不通。它只是不断给出会话过期的消息。我不知道这是浏览器错误,还是我可以在代码中做些什么来防止这种情况发生。我在Chrome中看到过这种情况,用户抱怨在IE中也会发生这种情况。

下面是我的代码(除去不重要的东西):
if (isset($_SESSION[challenge]) && isset($_POST[username]) && isset($_REQUEST[response])) {
  // Authenticate user stuff goes here
} else {
  $error = "Session expired or not established. You may need to close your browser and reopen it.";
  $encryptederror = encrypt(urlencode($error),$encryptionkey);
  header("Location:index.php?con=login&error=".$encryptederror);
  exit;
}

当用户试图再次登录时,如何防止代码连续进入else语句?

您在$_POST$_SESSION中缺少引号