php注销session变量和销毁session详细分析

时间:2016-07-31
php使用完一个session变量后,可以将其删除,也可以将其彻底销毁,删除session变量可以使用php unset函数,销毁session可以直接使用session_destory()函数。本文章向大家介绍php如何注销session变量和销毁session,以及注销和销毁seesion时需要注意的几点。

当使用完一个session变量后,可以将其删除,当完成一个会话后,也可以将其销毁。如果用户想退出WEB系统,就需要为他提供一个注销的功能,把他的所有信息在服务器中销毁。销毁和当前session有关的所有的资料,可以调用session_destory函数结束当前的会话,并情况当前会话的所有资源。该函数的语法格式如下所示:

bool session_destory(void) //销毁当前session有关的所有资料。

相对于session_start()函数,该函数用来关闭session的运作,如果成功则返回true,销毁session资料失败则返回false。但该函数并不会释放当前session相关的变量。也不会删除保存在客户端cookie中的session id。因为$_SESSION数组和自定义的数组在使用上是相同的,所以我们可以使用unset()函数来释放在session中注册的单个变量。如下所以:

unset($_SESSION['username']);  //删除在session中注册的用户名变量
unset($_SESSION['password']);  //删除在session中注册的用户密码变量
/* http://www.manongjc.com/article/1286.html */

一定要注意,不要使用unset($_SESSION)删除整个$_SESSION数组,这样将不能再通过$_SESSION超全局数组注册变量了,那如果想要把某个用户在session中注册的所有变量都删除,该如何操作呢?我们可以将数组变量$_SESSION赋值一个空数组。如下所示:

$_SESSION=array();   //将某个用户在session中注册的变量全部删除。

php默认的session是基于cookie的,session id被服务器存储在客户端的cookie中,所以在注销session时也需要清除cookie中保存的session id,而完成这一项工作必须借助setCookie函数完成。在cookie中,保存session id的cookie标示名称就是session的名称,这个名称是在php.ini中通过session.name设置的,在php中,我们可以通过session_name()函数获取session名称。删除session id的代码如下:

<?php
    if(isset($_COOKIE[session_name()])){          //判断cookie中是否保存session id
        setcookie(session_name(),'',time()-3600); //删除包含session id的cookie
    }
?>

总结:

php注销session变量和销毁session注意事项:

  1. session_destory()可以销毁session会话,但它不会释放session变量,我们需要使用unset函数释放session变量
  2. 使用unset函数释放所有session变量时,不能使用unset($_SESSION),而应该使用$_SESSION=array(); 
  3. 使用session_destory()销毁seesion会话时,我们还必须使用setcookie函数删除保存在客户端cookie里的session id