PHP中可以通过session id删除服务器上某个session吗
我理解的可能有误哈,你说通过id是什么意思是variable name 如果是variable name 用unset()
如果想完全移除session 用session_destroy
php官网documentation
Session 对象用于存储用户的信息。存储于 session 对象中的变量持有单一用户的信息,并且对于一个应用程序中的所有页面都是可用的。
当用户关闭页面的时候触发onunload事件,在此事件中进行相应的处理,但由于页面事件通常采用javascript脚本,所以采用如下方式处理。
在当前退出页面上书写如下代码:
<script>
function exit(){
//alert('退出');
windowlocationhref="autoCleanasp";
}
</script>
<body onunload="javascript:exit();">
编辑autoCleanasp页面代码
<%
sessionAbandon()
%>
java 里的session是由服务器管理的,一般在服务器配置里都能设置
比如tomcat默认配置为30分钟
tomcat/conf/webxml文件中
<session-config>
<session-timeout>30</session-timeout>
</session-config>
////销毁session////
function sessionDestroy() {
session_destroy();
setcookie(session_name(),'',time()-3600);
$_SESSION = array();
}
如果是session use cookie,使用file存储,一般就保留默认配置值,服务器以1/100的几率处理过期session,没必要每次请求都进行session gc处理
如果自己处理,你要删除过期session,总得遍历session保存目录的所有的session文件吧?你想想用户量如果很大,每个用户登录浏览服务器的页面,就会生成session文件,那得多少份session文件,然后遍历每个session文件,判断文件上次访问时间离当前时间是否超出了session_maxlife设置的时间,超过即删除。你如果用php去做这个工作,效率上不是更慢了吗!你还不如设置phpini的sessiongc_probability = 100和sessiongc_divisor = 100呢,但是一般不需要服务器接收每次http请求都处理session gc就是因为效率资源上的考量。几十万的访问量,每次请求都进行文件读删,这是不是会损耗不少资源呢?你再想想吧
javascript不能解决这个问题啊退出登陆,要做清理工作和使session失效最好调用servlet处理触发一个servlet处理的javascript本身很少直接处理session失效session保存在服务器端的,js是操作客户端的
秀才---那是不行的假如你把这个js写在jsp中间,管你调不调用js ,都要执行的
首先我想说明下、session是有
服务器
也就是Web
容器
创建的、使用requestgetSession()来获取HttpSession对象、使用sessionsetAttribute()进行数据的保存、而使用sessiongetAttribute()来获取session内保存的数据、 在以下三种情况下、都可以结束session一、关闭
浏览器
、二、调用HttpSession的invalidate()方法、删除HttpSession对象和数据、三、两次访问
时间间隔
大于session
定义
的非活动时间间隔、注意:在session结束时、服务器会清空当前浏览器相关的数据信息、
祝君好运
、谢谢、
0条评论