在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
本站声明:网站内容来源于网络,如有侵权,请联系我们,我们将及时处理。
微信扫码关注
更新实时通知