我正在我的网站上创建一个登录功能,并且正在考虑在每个页面上重新生成会话 ID,以使事情更加安全。
我已阅读 PHP:s 有关 regenerate_id 的信息,但 PHP 页面上的帖子与他们提供的有关 session_regenerate_id 的信息有很大不同。
有人可以解释一下这两个问题:
Thanks
在每个页面上调用 session_regenerate_id() 可能有点矫枉过正,具体取决于您的设置。该功能用于防止会话劫持,并且应在用户提升权限级别(例如登录)时使用。通常,一旦用户登录,您就会切换到 https 连接,这意味着您只需要调用 session_regenerate_id() 一次,因为新的 cookie 将通过安全连接传输,并且无法被窃听。但是,如果您的服务器上没有 SSL 证书,那么在每个页面上重新生成会话 cookie 可能是一个不错的选择。
当您调用 session_regenerate_id() 时,您不需要复制会话数据。这一切都由 PHP 为您处理。基本上会创建一个新的会话令牌和 cookie,将会话数据复制到会话存储中以与新令牌关联,如果将 true 作为单个参数传递给函数,则磁盘上的旧会话数据文件将被删除。
您在会话中存储什么来指示用户是否已登录取决于您。我通常只存储一个简单的布尔值来指示他们是否已登录,以及保存用户名、姓名等的其他值。然后检查某人是否已登录就像这样简单:
<?php
if ($_SESSION['logged_in']){
//User logged in
} else {
//User not logged in
}
?>
HTH.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)