如何session_id()和$_SESSION关系?(PHP)


How do session_id() and $_SESSION relate? (PHP)

两者有何不同?

根据我对一般身份验证工作方式的理解,ID存储在服务器端和客户端。对于每个请求,客户端发送cookie,匹配服务器中的ID,并输出所需的数据。因此,当我这样做时:

session_start();
session_id();

cookie也存储在客户端。这对我来说很有意义,因为在我看来,session_id()只是生成了那个ID。然后,我们可以将这个ID存储到(例如)给定用户的User表中。然后,对于每个浏览器请求,我们只需将cookie中的ID与数据库中的ID进行匹配。

但是,为什么我们不能坚持使用ID进行身份验证呢?我看到在线代码做以下事情,我不太明白在$_SESSION中设置字段的意义是什么:

session_start();
$_SESSION['username'] = 'Billy Bobby';

会话ID存储在cookie客户端。在服务器端,数据(来自$_SESSION)保存在服务器ID Key下的文件中(通常)。

您可以将所有数据保存在数据库中,但默认情况下,在一个页面视图和第二个页面视图之间没有持久性。

会话ID与身份验证无关。尽管您可以使用会话数据来管理跨多个请求的身份验证状态