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

时间:2015-08-14 20:08:24

标签: php session cookies

两者之间有什么区别?

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

session_start();
session_id();

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

但是,为什么我们不能只使用ID进行身份验证?我已经看到在线代码执行以下操作,我不明白在$_SESSION中设置字段的重点是:

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

1 个答案:

答案 0 :(得分:1)

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

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

会话ID实际上与身份验证无关。虽然您可以使用会话数据来管理多个请求中的身份验证状态。