no4990
2018-03-28 19:07
<?php session_start(); $_SESSION['name'] = 'jobs'; echo session_id(); //在这里删除name的session值 unset($_SESSION['name']); if (isset($_SESSION['name'])) { echo $_SESSION['name']; } session_destroy(); echo session_id(); 输出结果: qrnjdtqn0g83t7t5tc56jkhks3
为何使用了session_destroy函数,session_id就没了,和课程中的说明不一样。
课程原文: session_destroy并不会立即的销毁全局变量$_SESSION中的值。
看清楚,是全局变量$_SESSION中的值。
如下
<?php session_start(); $_SESSION['name'] = 'jobs'; session_destroy(); var_dump($_SESSION);
输出
array(1) { ["name"]=> string(4) "jobs" }
慕数据的回答更是错上加错,甚至连教程的错误原话都没找到?
session_id和全局变量$_SESSION中值的延时销毁有关系?
"如果要删除所有的session,可以使用session_destroy函数销毁当前session,【session_destroy会删除所有数据,但是session_id仍然存在。】"看清楚,这句课程就是是错的!
你完全拿不到session_id还能证明session_id存在吗,你$_SESSION变量再有值,session文件都没了,会话都结束了。
w3c原话“终结 Session:
如果您希望删除某些 session 数据,可以使用 unset() 或 session_destroy() 函数。
unset() 函数用于释放指定的 session 变量:
您也可以通过 session_destroy() 函数彻底终结 session:
注释:session_destroy() 将重置 session,您将失去所有已存储的 session 数据”
http://www.zixuephp.com/html/phphuihua/20150824_41386.html “session_destroy()结束当前的session”。
教程是搬的这句?https://www.php.net/manual/zh/function.session-destroy.php“为了彻底销毁会话,必须同时重置会话 ID。 如果是通过 cookie 方式传送会话 ID 的,那么同时也需要 调用 setcookie() 函数来 删除客户端的会话 cookie”是因为session_id在cookie存了一份拷贝,才说session_destroy没法重置cookie里那份session_id的。
https://www.php.net/manual/zh/function.session-id.php这里还说了session_id() 返回当前会话ID。 如果当前没有会话,则返回空字符串("")
https://www.phpernote.com/php-function/922.html“session_destroy();//这个作用更彻底,删除$_SESSION 删除session文件,和session_id”
感觉用了session_destroy()函数,就删了所有session了
那应该是你的第一个echo session_id()吧 代码是从上往下执行的 个人理解
在代码的第6行,你已经调用了unset函数了,此时$_SESSION被立刻销毁。
PHP进阶篇
181838 学习 · 2577 问题
相似问题