繁体   English   中英

PHP“Session_regenerate_id”和用户身份验证

[英]PHP “Session_regenerate_id” and Authentication of users

我正在我的网站上创建一个登录功能,我正在考虑在每个页面上重新生成会话ID以使事情更安全。

我已经阅读了有关regenerate_id的PHP:s信息,但PHP页面上的帖子与他们提供的有关session_regenerate_id的信息完全不同。

有人可以解释这两个问题:

  • 我是否需要将旧会话数据复制到新生成的会话数据中,还是自动完成? 代码示例非常感谢...

  • 如何检查用户是否已登录? 我应该在会话变量中存储什么,以及如何存储? 代码示例非常感谢...

谢谢

在每个页面上调用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。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM