30
2019
12

PHP配置Session和销毁Session

在PHP配置文件php.ini中,有一组和Session相关的配置选项。通过对一些选项重新设置新值,就可以对Session进行配置,否则使用默认的Session配置

phpinfo();

session.auto_start=0;在请求启动时初始化session

session.cache_expire=180;设置缓存中的会话文档在n分钟后过时

session.cookie_lifetime=0;设置cookie保存时间(s),相当于设置Session过期时间,为0时表示直到浏览器被重启

session.cookie_path=/;cookie的有效路径

session.cookie_domain=;cookie的有效域

session.name=PHPSESSID;用在cookie里的session的名字

session.save_handler=files;用于保存/取回数据的控制方式

session.save_path=/tmp;在save_handler设为文件时传给控制器的参数,这是数据文件将保存的路径.

session.use_cookies=1;是否使用cookies

销毁Session

  当使用完一个Session变量后,可以将其删除,当完成一个会话后,也可以将其销毁。如果用户想退出Web系统,就需要提供一个注销的功能,把所有信息在服务器中销毁。销毁和当前Session有关的所有的资料,可以调用session_destroy()函数结束当前的会话,并清空会话中的所有资源

session_destroy()

bool session_destroy ( void )    

  session_destroy()销毁当前会话中的全部数据,删除同名Session文件,但是不会重置当前会话所关联的全局变量,也不会重置会话cookie。如果需要再次使用会话变量,必须重新调用session_start()函数

<?php
session_start();
session_destroy();
?>

可以使用unset()函数来释放在Session中注册的单个变量

print_r ($_SESSION);//'Array ( [username] => huochai [age] => 28 )'

unset($_SESSION['username']);

unset($_SESSION['age']);

print_r ($_SESSION);//'Array()'

  [注意]不要使用unset($_SESSION)删除整个$_SESSION数组,这样将不能再通过$_SESSION超全局数组注册变量了

  如果想把某个用户在Session中注册的所有变量都删除,可以直接将数组变量$_SESSION赋值为一个空数组

$_SESSION=array();    

  PHP默认的Session是基于Cookie的,Session ID被服务器存储在客户端的Cookie中,所以在注销Session时也需要清除Cookie中保存的SessionID,而这就必须借助setCookie()函数完成。在Cookie中,保存Session ID的Cookie标识名称就是Session的名称,这个名称是在php.ini中,通过session.name属性指定的值。在PHP脚本中,可以通过调用session_name()函数获取Session名称。删除保存在客户端Cookie中的Session ID

if(isset($_COOKIE[session_name()])) {

    setCookie(session_name(),'',time()-3600);

}

  通过前面的介绍可以总结出来,Session的注销过程共需要四个步骤

<?php
//第一步:开启Session并初始化
session_start();

//第二步:删除所有Session的变量,也可用unset($_SESSION[xxx])逐个删除
$_SESSION = array();

//第三步:如果使用基于Cookie的Session,使用setCooike()删除包含Session Id的Cookie
if (isset($_COOKIE[session_name()])) {
    setcookie(session_name(),'', time()-42000);
}

//第四步:最后彻底销毁Session,删除服务器端保留session信息的文件
session_destroy();
?>

原文链接:https://www.qiquanji.com/post/8008.html

本站声明:网站内容来源于网络,如有侵权,请联系我们,我们将及时处理。

gzh

微信扫码关注

更新实时通知

« 上一篇 下一篇 »

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。