设为首页 收藏本站
查看: 867|回复: 0

[经验分享] php session删除会话,有三个方法 unset(); session_destroy();

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-11-16 09:48:20 | 显示全部楼层 |阅读模式
2015-11-14 12:32:32

删除会话,有三个方法
1、unset();
删除单个会话
<?php
session_register();
$_SESSION["admin"]="aa";
if(!empty($_SESSION['admin'])){
$myvalue=$_SESSION['admin'];
echo $myvalue;
}
//删除session,一个个地删除的
unset($_SESSION["admin"]);  
echo $_SESSION['admin'];
?>
e7d72d16gw1ey0g4q3hucj205801ta9w.jpg
只能显示 一个,说明,删除了session


注意:
unset()不可以一次注销整个数组,这样会禁止整个会话功能 ,
如:unset($_SESSION)将全局变量$_SESSION销毁,而且没有办法将其恢复 ,用户也不能再注册 $_SESSION变量,


2、删除多个会话$_SESSION=array();
//删除多个会话,把一个空数组给$_SESSION,把之前的值覆盖了,这样并不是将$_SESSION销毁 ,还可以重新赋值


e7d72d16gw1ey0g5ayhtwj205t04x749.jpg




<?php
session_register();
$_SESSION["admin"]="aa";
$_SESSION['name']="叶凌月";
$_SESSION['age']=16;
echo "<pre>";
print_r($_SESSION);
echo "</pre>";
//删除多个会话,把一个空数组给$_SESSION,把之前的值覆盖了,这样并不是将$_SESSION销毁 ,还可以重新赋值
$_SESSION=array();  
echo "<pre>";
print_r($_SESSION);
echo "</pre>";
?>






3、结束当前的会话:
session_destory();


1、出错 :
<?php
session_start();
$_SESSION["admin"]="aa";
$_SESSION['name']="叶凌月";
$_SESSION['age']=16;
echo "<pre>";
print_r($_SESSION);
echo "</pre>";
//结束当前会话
session_destroy($_SESSION);
//session_unset($_SESSION);
echo "<pre>";
print_r($_SESSION);
echo "</pre>";
?>


e7d72d16gw1ey0g61yniej20dg07l0t4.jpg
Wrong parameter count for session_destroy()
错误的参数计数session_destroy()
原因 : e7d72d16gw1ey0g6gwxrfj208z02b0t2.jpg
session_destroy();不需要添加参数 ,注销代表的是当前 的会话


注意:
使用session_destroy();要与session_start();一起用不然会受到警告


2、出错,觉得session_destroy();
不起作用,为什么还是会把$_SESSION的值显示 ,是否是注销了还保存有一份在cookie里呢,但是没有创建cookie呀,不管先试试


<?php
session_start();
$_SESSION["admin"]="aa";
$_SESSION['name']="叶凌月";
$_SESSION['age']=16;


setcookie($_SESSION,"",time()-1);
//结束当前会话
session_destroy();


echo "<pre>";
print_r($_SESSION);
echo "</pre>";
?>
e7d72d16gw1ey0g72ryj3j20f604oglx.jpg
Warning: setcookie() expects parameter 1 to be string, array given
你给传递给strlen()的参数不是string类型的。
改为
e7d72d16gw1ey0g7f9t27j20b901gaaa.jpg


结果还是显示 了
e7d72d16gw1ey0g7nelh5j20aq03g74d.jpg



原因 大解决:
1、session 是一个会话,在session_start() 的时候建立。
2、$_SESSION 是一个全局数组,和其他的全局数组没有任何区别。只是php在创建一个会话的时候,会顺便创建一个全局数组来保存会话的内容,这个数组又刚好叫$_SESSION,和我们自己去创建的其他数组没有什么不一样。
3、session_start() 执行的时候,开启了会话,首先是如果该会话没有被创建,则在系统的tmp目录中创建了session文件(默认,可自定义),并且在当前会话的执行脚本创建全局数组$_SESSION,这时的$_SESSION是一个空数组。如果会话存在,则读取session文件中的内容,建立$_SESSION数组。
4、session_destroy() ,手册中明确的说道:destroys all of the data associated with the current session. It does not unset any of the global variables associated with the session, or unset the session cookie. To use the session variables again, session_start() has to be called.
不会删除 session 的全局变量和 session相关cookie,只是结束了这次会话。作为一个普普通通的全局变量,
如果我们不需要乐得话,就将他 unset() 掉。如果想再次开启会话,就需要再一次session_start(),但是session_start() 重新建立会话,会重新初始化$_SESSION数组,session_start()之后$_SESSION 就又是一个空数组了


<?php
session_start();
$_SESSION["admin"]="aa";
$_SESSION['name']="叶凌月";
$_SESSION['age']=16;
//结束当前会话
session_destroy();


?>
<?php
session_start();
echo "<pre>";
print_r($_SESSION);
echo "</pre>";
?>

e7d72d16gw1ey0g84bmg5j206402iq2u.jpg

修改下


e7d72d16gw1ey0g8r51xbj206i07i0tr.jpg
总结 :
session_destroy();只是仅仅结束当前会话,而且是用之前要与session_start();一起用,session_start();是初始化变量$_SESSION相当于清除了数组里的变量


还有session_destory();与session_unset();得到的结果不一样,
要一样,session_destroy();重新启动一次,session_start();

e7d72d16gw1ey0giwqsh3j209v0bmmz0.jpg e7d72d16gw1ey0gj5k3ulj209s0cu769.jpg e7d72d16gw1ey0gje3er5j209j0b6q4r.jpg


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-139751-1-1.html 上篇帖子: PHP的数据类型 下篇帖子: php中类的属性的声明和赋值
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表