我前一段时间看了这个,这对我来说仍然很模糊.我想知道当我使用它时,关于会话的以下内容是否正确:$_SESSION['username'] = "pete";
$_SESSION 是一个只能在服务器上更改的全局变量$_SESSION['username']被宣布为cookie将在客户端设置$_SESSION['username']被宣布为cookie将在服务器端进行设置,以及如果第三个陈述是真的那么,如果我登录的话,为什么我找不到里面有用户名的cookie呢?我确实找到了一个会话cookie,但它包含了一个代码tkcsq66lucpra9m7j3ogqol5h7.现在不是一个名字吗?
Que*_*tin 15
$_SESSION是一个只能在服务器上更改的全局变量
它是一个超级全局的...但是在脚本的执行之间填充了保存的数据.
当
$_SESSION['username']被宣布为cookie将在客户端设置
不会.会话开始时,将创建一个cookie(除非设置已被设置)
这意味着客户端可以查看数据但不能编辑数据
不.该cookie包含会话ID,而不是数据
当
$_SESSION['username']被宣布为cookie将在服务器端进行设置,以及
Cookie仅存储在客户端上.数据将存储在服务器上,并与存储在发送到浏览器的cookie中的标识符相关联.
如果第三个陈述是真的那么,如果我登录的话,为什么我找不到里面有用户名的cookie呢?
事实并非如此.
我找到了一个会话cookie,但它包含一个代码,如tkcsq66lucpra9m7j3ogqol5h7.
那是标识符.
如果您自己构建会话系统(而不是使用PHP的内置库),那么您可以在数据库中存储这样的内容:
session key value
tkcsq66lucpra9m7j3ogqol5h7 username pete
Run Code Online (Sandbox Code Playgroud)
然后,会话库可以在会话启动时填充$_SESSION,"username" => "pete"并且会在其中收到cookie sessionId=tkcsq66lucpra9m7j3ogqol5h7.
PHP的内置系统不是那么便宜和讨厌(并且透明,所以你不必担心实现细节).