unset($_SESSION)不蘊涵unset($_SESSION['id'])
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了unset($_SESSION)不蘊涵unset($_SESSION['id']),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1721字,纯文字阅读大概需要3分钟。
内容图文
![unset($_SESSION)不蘊涵unset($_SESSION['id'])](/upload/InfoBanner/zyjiaocheng/237/9b51acc6da894470b5c5fab7a813ef86.jpg)
$_SESSION['id'] = 1;
用了 unset($_SESSION);
下次刷新页面 session_start();
后,
$_SESSION['id']
的值 = 1
又取出来了 !
而用 unset($_SESSION['id']);
则可以正常清除 !
谁能详细讲讲, 谢谢 !
回复内容:
$_SESSION['id'] = 1;
用了 unset($_SESSION);
下次刷新页面 session_start();
后,
$_SESSION['id']
的值 = 1
又取出来了 !
而用 unset($_SESSION['id']);
则可以正常清除 !
谁能详细讲讲, 谢谢 !
由於實現細節,「字面上」並不總是顯而易見地對應「實際上」。
unset($_SESSION['id'])
改變的是 $_SESSION
對象的值;unset($_SESSION)
改變的是 $_SESSION
的引用,並沒有改變 $_SESSION
對象。
只有改變 $_SESSION
對象,纔會改變實際的 Session。
然而,如果 $_SESSION = [];
,則可以達到清空 Session 的目的。
這說明,直接賦值於 $_SESSION
變量,也可以改變 $_SESSION
對象。
所以,我猜測,PHP 引擎會根據 $_SESSION
變量最終引用的對象,修改 Session;如果沒有 $_SESSION
變量,則跳過這一步。
当前这个请求的 context 中, $_SESSION
这个变量实际是指向存储 session 值的数组的引用。
unset($_SESSION)
只是把当前这个请求的 context 中的 $_SESSION
这个变量写空了,并没有实际动到存储 session 的值的数组。
下一次请求的时候,自然又会把下一次请求的 context 中的 $_SESSION
变量指向存储 session 值的数组的引用。
其实 kmxz 说的很清楚了,
无论是$_GET还,$_POST,$_COOKIE还是$_SESSION,
他们本身是php的一个变量,
当一个请求来的时候,zend会解析query_string,body,HTTP_COOKIE,phpsessionid,
然后将值装入上面那几个变量中,其中session是存在/tmp里头的文件里,文件名称就是phpsessionid值(均指默认情况下)。
session的存储文件是有一定几率触发删除的,如果没有被删除,
下次请求的时候,zend又会根据phpsessionid的值找到session文件,然后读取并反序列化(非php的unserialize函数)后重新装进了$_SESSION里,所以id又有值了。
而你 unset($_SESSION['id'])后,改变了/tmp里的对应id的值(其实被删了),所以重新请求后,id就没有了。
内容总结
以上是互联网集市为您收集整理的unset($_SESSION)不蘊涵unset($_SESSION['id'])全部内容,希望文章能够帮你解决unset($_SESSION)不蘊涵unset($_SESSION['id'])所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。