gpt4 book ai didi

PHP "Session_regenerate_id"和用户身份验证

转载 作者:太空狗 更新时间:2023-10-29 14:59:45 24 4
gpt4 key购买 nike

我正在我的网站上创建一个登录功能,我正在考虑在每个页面上重新生成 session ID 以提高安全性。

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

谁能解释这两个问题:

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

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

谢谢

最佳答案

在每个页面上调用 session_regenerate_id() 可能有点矫枉过正,具体取决于您的设置。该函数用于防止 session 劫持,并且应该在用户提升其特权级别(例如登录)时使用。通常您会在用户登录后切换到 https 连接,这意味着您只需调用 session_regenerate_id() 一次,因为新的 cookie 将通过安全连接传输并且无法被窃听。但是,如果您的服务器上没有 SSL 证书,则在每个页面上重新生成 session cookie 可能是一个不错的选择。

当您调用 session_regenerate_id() 时,您不需要复制 session 数据。这一切都由 PHP 为您处理。基本上会创建一个新的 session token 和 cookie,将 session 数据复制到 session 存储中以与新 token 相关联,如果您将 true 作为单个参数传递给函数,磁盘上的旧 session 数据文件将被删除。

您在 session 中存储什么来指示用户是否已登录由您决定。我通常只存储一个简单的 bool 值来指示他们是否已登录,以及其他包含用户名、姓名等的值。然后检查某人是否已登录就这么简单:

<?php
if ($_SESSION['logged_in']){
//User logged in
} else {
//User not logged in
}
?>

HTH.

关于PHP "Session_regenerate_id"和用户身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4113225/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com