如何获得session的存活时间,请各位帮忙. session.cookie_lifetime = 0;就可以了,他的时间是等到页面关闭session就会变成无效。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 楼主的想法个人觉得是不可能完成的.因为别人不可能一定会在离开的时候点击"离开",所以说,session里面可以记录进来的时间,但不可能有离开的时间,就算是象52juanjuan(Fibona) 老大说的那样,终止session,还是不可能得到用户离开的时间的.建议楼主使用点击页面的有效次数做为计数的单位. 我觉得关闭IE时应该可以触发一个事件来记录当前时间的.我不知道PHP能不能做到. 晕开始看错了,你要得到session的时间,俺不太清楚,如果你要得到一个用户访问某个页面的时间还是有方法的,就是开始是设一个进入时间,然后更新一个最后活动时间,最后活动时间可以考虑每隔30秒刷新一次,当用户正常退出时,更新她的那个最后活动时间,然后两个时间相减就得到了,如果用户非正常离开,可以设置他最近一分钟或多少没有刷新页面,活动就算离开就可以了,这样只是得到大体的时间,如果要得到准确的时间,等高手吧。 像六楼说的,用使浏览器关闭时打开一个窗口连接到一个注销的页面(javascript可以做到)。该窗口也自动关闭。浏览器获取页面后是不会向服务器发送任何消息的,当然服务器就无法知道浏览器是何时关闭。 当ie被关闭或url改变时将触发window.onbeforeunload和window.onunload事件,由于window.onunload事件对ie6不可靠,所以现在常用前者在window.onbeforeunload事件中打开弹出窗口执行注销session动作即可以下的讨论排除网络断线等物理因素鉴于http协议是无状态协议,所以你最多能记录到用户最后一次访问时的时间在session中设置两个变量,访问时:<?phpsession_start();if(!isset($_SESSION['start'])) { $_SESSION['start'] = time(); //记录首次进入的时间 $_SESSION['end'] = time(); //令结束时间与首次进入的时间相同}else $_SESSION['end'] = time(); //再次进入的时间?>加入js脚本<script>function window.onbeforeunload() { if(event.clientX>document.body.clientWidth&&event.clientY<0||event.altKey) { open("close.php"); }}</script>close.php<?phpsession_start();// 处理上面定义的两个变量session_destroy(); //结束session?> to xuzuning(唠叨)老大.个人觉得,楼主的最终想法是想知道他的客户在他的网站上准确的看了多少时间(大概最好能精确到秒....),可能还会要求在每个页面看了多少时间.关于这个我也想过,但基于php是在服务器端工作,如果客户不点"离开"的话,根本无法记录正确离开时间.xuzuning(唠叨)老大的那个,个人觉得,也不合适楼主用. 我想的是用户直接关闭IE窗口,而不经过我做的退出登陆窗口,所以我不清楚能否在叉掉IE窗口时,能否触发事件,将时间保存下来. to 楼主....************************************SenQ(在路上捡到分)已经说的很清楚了浏览器获取页面后是不会向服务器发送任何消息的,当然服务器就无法知道浏览器是何时关闭。***********************************基于php的原理,个人不认为可以找到楼主所说的*****************我想的是用户直接关闭IE窗口,而不经过我做的退出登陆窗口,所以我不清楚能否在叉掉IE窗口时,能否触发事件,将时间保存下来.****************不过,如果楼主找到方法,记录告诉在下一声:)多谢了 帝国cms首页如何调取自定义的字段 图片怎么不显示啊 php 做一个QQ在线交谈功能 新手学习PHP,请大家介绍好的入门教程! snoopy中有个链接补全的功能,请问curl中有没有相应的函数呢? 关于php项目的管理问题?bugzilla还是jira? svn 还是vss? 问个理论类的问题,现在有些混乱了(看了很多文章) 这个mysql语名如何写 点评一下这个下载文件,谢谢. 哪位大哥能提供一个比较精典的php与perl相兼容的教程 如何实现添加一个“自动添加当前时间(添加新纪录或者修改时)”的字段呢?盼高手帮忙! 插入了记录,但是记录的字段都没有进去是怎么回事情?
因为别人不可能一定会在离开的时候点击"离开",所以说,session里面可以记录
进来的时间,但不可能有离开的时间,就算是象52juanjuan(Fibona) 老大说的那
样,终止session,还是不可能得到用户离开的时间的.建议楼主使用点击页面的有效次数做为计数的单位.
在window.onbeforeunload事件中打开弹出窗口执行注销session动作即可以下的讨论排除网络断线等物理因素
鉴于http协议是无状态协议,所以你最多能记录到用户最后一次访问时的时间
在session中设置两个变量,访问时:
<?php
session_start();
if(!isset($_SESSION['start'])) {
$_SESSION['start'] = time(); //记录首次进入的时间
$_SESSION['end'] = time(); //令结束时间与首次进入的时间相同
}else
$_SESSION['end'] = time(); //再次进入的时间
?>
加入js脚本
<script>
function window.onbeforeunload() {
if(event.clientX>document.body.clientWidth&&event.clientY<0||event.altKey) {
open("close.php");
}
}
</script>close.php
<?php
session_start();
// 处理上面定义的两个变量
session_destroy(); //结束session
?>
(大概最好能精确到秒....),可能还会要求在每个页面看了多少时间.关于这个我
也想过,但基于php是在服务器端工作,如果客户不点"离开"的话,根本无法记录
正确离开时间.xuzuning(唠叨)老大的那个,个人觉得,也不合适楼主用.
SenQ(在路上捡到分)已经说的很清楚了
浏览器获取页面后是不会向服务器发送任何消息的,当然服务器就无法知道浏览器是何时关闭。
***********************************基于php的原理,个人不认为可以找到楼主所说的*****************
我想的是用户直接关闭IE窗口,而不经过我做的退出登陆窗口,所以我不清楚能否在叉掉IE窗口时,能否触发事件,将时间保存下来.
****************
不过,如果楼主找到方法,记录告诉在下一声:)多谢了