为何使用了session_destroy函数,session_id就没了?和课程中的说明不一样

来源:4-7 删除与销毁session

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就没了,和课程中的说明不一样。

写回答 关注

5回答

  • 慕数据5453231
    2019-03-08 16:49:39
    已采纳

    课程原文: session_destroy并不会立即的销毁全局变量$_SESSION中的值。

    看清楚,是全局变量$_SESSION中的值。

    如下

    <?php
    session_start();
    $_SESSION['name'] = 'jobs';
    session_destroy();
    var_dump($_SESSION);

    输出

    array(1) { ["name"]=> string(4) "jobs" }


    独傲的野狼

    【session_destroy会删除所有数据,但是session_id仍然存在。】原文就是错的

    2020-09-29 08:14:44

    共 2 条回复 >

  • 独傲的野狼
    2020-09-28 09:32:37

    慕数据的回答更是错上加错,甚至连教程的错误原话都没找到?

    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”


  • 回忆回不去了
    2018-09-20 15:38:45

    感觉用了session_destroy()函数,就删了所有session了


  • 慕仰5167399
    2018-08-25 08:48:54

    那应该是你的第一个echo session_id()吧  代码是从上往下执行的 个人理解

  • qq_long妹_0
    2018-03-28 23:43:20

    在代码的第6行,你已经调用了unset函数了,此时$_SESSION被立刻销毁。

PHP进阶篇

轻松学习PHP中级课程,进行全面了解,用PHP快速开发网站程序

181838 学习 · 2577 问题

查看课程

相似问题