您现在的位置: 365建站网 > 365文章 > php中删除Session和销毁Session的方法

php中删除Session和销毁Session的方法

文章来源:365jz.com     点击数:1010    更新时间:2018-11-05 13:18   参与评论

删除某个session值可以使用PHP的unset函数,删除后就会从全局变量$_SESSION中去除,无法访问。

</>code

  1. session_start();
  2. $_SESSION['name'] = 'jobs';
  3. unset($_SESSION['name']);
  4. echo $_SESSION['name']; //提示name不存在

如果要删除所有的session,可以使用session_destroy函数销毁当前session,session_destroy会删除所有数据,但是session_id仍然存在。

</>code

  1. session_start();
  2. $_SESSION['name'] = 'jobs';
  3. $_SESSION['time'] = time();
  4. session_destroy();

值得注意的是,session_destroy并不会立即的销毁全局变量$_SESSION中的值,只有当下次再访问的时候,$_SESSION才为空,因此如果需要立即销毁$_SESSION,可以使用unset函数。

</>code

  1. session_start();
  2. $_SESSION['name'] = 'jobs';
  3. $_SESSION['time'] = time();
  4. unset($_SESSION);
  5. session_destroy(); 
  6. var_dump($_SESSION); //此时已为空

如果需要同时销毁cookie中的session_id,通常在用户退出的时候可能会用到,则还需要显式的调用setcookie方法删除session_id的cookie值。

unset($_SESSION['xxx']) 删除单个session,unset($_SESSION['xxx']) 用来unregister一个已注册的session变量。

其作用和session_unregister()相同。

session_unregister()在PHP5中已经废弃。

 php 官方删除session方式

</>code

  1. <?php
  2.      // 初始化session.
  3.      session_start();
  4.      /*** 删除所有的session变量..也可用unset($_SESSION[xxx])逐个删除。****/
  5.      $_SESSION = array();
  6.      /***删除sessin id.由于session默认是基于cookie的,所以使用setcookie删除包含session id的cookie.***/
  7.      if (isset($_COOKIE[session_name()])) {
  8.         setcookie(session_name(), '', time()-42000, '/');
  9.      }
  10.      // 最后彻底销毁session.
  11.      session_destroy();
  12. ?>

任务

  使用unset删除name的session值。

</>code

  1. <?php
  2. session_start();
  3. $_SESSION['name'] = 'jobs';
  4. //在这里删除name的session值
  5. unset($_SESSION['name']);
  6. if (isset($_SESSION['name'])) {
  7.     echo $_SESSION['name'];
  8.     return;
  9. }
  10.   echo 'session被销毁';

彻底销毁Session代码如下所示:

</>code

  1. <?php
  2.   //开启 Session
  3.   session_start();
  4.   // 删除所有 Session 变量
  5.   $_SESSION = array();
  6.   //判断 cookie 中是否保存 Session ID
  7.    if(isset($_COOKIE[session_name()])){
  8.      setcookie(session_name(),'',time()-3600, '/');
  9.   }
  10.   //彻底销毁 Session
  11.   session_destroy();
  12. ?>


注意:使用 $_SESSION = array() 清空 $_SESSION数组的同时,也将这个用户在服务器端对应的 Session 文件内容清空。而使用 session_destroy()函数时,则是将这个用户在服务器端对应的 Session 文件删除。

session_destroy()结束当前的会话,并清空会话中的所有资源。该函数不会unset(释放)和当前session相关的全局变量(globalvariables),也不会删除客户端的session cookie.PHP默认的session是基于cookie的,如果要删除cookie的话,必须借助setcookie()函数。

小结:

session_destroy是注销所有的session变量,并且结束session会话;

如果希望删除一些session数据,则可以使用unset()函数或session_destroy()函数。unset()函数的作用是释放指定的session变量,


如对本文有疑问,请提交到交流论坛,广大热心网友会为你解答!! 点击进入论坛

发表评论 (1010人查看0条评论)
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
昵称:
最新评论
------分隔线----------------------------

快速入口

· 365软件
· 杰创官网
· 建站工具
· 网站大全

其它栏目

· 建站教程
· 365学习

业务咨询

· 技术支持
· 服务时间:9:00-18:00
365建站网二维码

Powered by 365建站网 RSS地图 HTML地图

copyright © 2013-2024 版权所有 鄂ICP备17013400号