如何在注销功能中将会话 ID 标记为已过时 [重复]
Posted
技术标签:
【中文标题】如何在注销功能中将会话 ID 标记为已过时 [重复]【英文标题】:how to mark session ID as obsolete in log out function [duplicate] 【发布时间】:2016-06-28 16:38:09 【问题描述】:this website 建议,为了实现强大的注销功能,您必须将会话 ID 标记为过时。
我想知道你究竟会如何做到这一点?我已经包含了session_regenerate_id(true)
,但我不确定这是否会将会话 ID 标记为过时。
当提交索引页面上的注销表单时,它们会被发送回登录页面:
登录页面:
if(isset($_POST["log_out"]) && ($_POST["log_out"] == '1'))
//this means we have come from another page after pressing the log out button
//so therefore we remove session variables and destroy session
//The logout function on your website should mark session IDs as obsolete.
session_regenerate_id(true); //is this right????????
session_unset();
session_destroy();
$loginMessage = "You have been logged out";
索引页面注销表单:
<form id="form-log-out" name="form-log-out" method="post" action="login.php" onsubmit="return confirmLogOut()">
<input name="log_out" type="hidden" value="1"/>
<input type="submit" class="button_style" value="Log Out" />
</form>
【问题讨论】:
【参考方案1】:根据the docs,session_regenerate_id
:
使用新生成的更新[s]当前会话 id
...
session_regenerate_id() 会将当前会话 id 替换为新的,并保留当前会话信息。
因此,是的,这会使旧的会话 ID 过时。
如需了解更多信息,请参阅this question。
【讨论】:
谢谢。您能告诉我(在这种情况下)如何将会话 ID 标记为过时增加安全性吗?如果会话无论如何都会被立即销毁,我很困惑为什么需要它。当您销毁会话时,它是否也不会销毁会话 ID? @Sarahsession_destroy
实际上不会重置会话 ID,这就是为什么 session_regenerate_id
仍然有用。看到这个答案:***.com/a/8642254/2773837
嗯,现在说得通了..谢谢..
还有一个问题。您是否看到我将“true”作为 session_regenerate_id 的参数的方式?这是否也会删除以前的会话数据?
@Sarah 是的。文档说:“delete_old_session
是否删除旧的关联会话文件。”以上是关于如何在注销功能中将会话 ID 标记为已过时 [重复]的主要内容,如果未能解决你的问题,请参考以下文章