Ⅰ php 如何得到访问者在当前页面的停留时长
当打开页面时,PHP记录IP和访问时间
关闭页面时,做个onunload事件,这个事件就是给PHP发送关闭a.html的请求,这时候PHP做
关闭时间-访问时间=停留时间
不包括一些特殊情况,如:断电导致关闭浏览器、不支持JS等特殊情况。
-------
简单写一个,也没经过测试,你自己试下吧
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>javascript</title>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
</head>
<body onunload="unOnlineTime()">
<img src="online.php?action=online" style="display:none;" id="onlineImg" />
<script language="javascript">
function unOnlineTime()
{
//online.php页面做判断,如果是online就是访问了,unonline就是退出访问状态,由onunload事件发送请求
//当然也可以用AJAX做
document.getElementById('onlineImg').src = 'online.php?action=unonline';
}
</script>
</body>
</html>
Ⅱ PHP网站中,如何判断用户是否是在线的状态
普通http网站是一种无状态连接,每次一个请求,一个应答,没有长连接状态。
但是可以通过记录访问时间,来确定用户的状态。
用户登录后,每次访问,更新一下最近访问时间在数据库里
在用户页面的公共部分,做一个定时轮询,n秒一次(防止用户打开页面后放着不动,看资料或者做别的)
服务器端做一个定时,将最近时间在n秒内的用户设为在线状态,将最近时间大于n秒的(说明已经关了页面),设为离线状态。 如果是普通 web空间无法配置定时器,可以在每次用户访问时处理一次(如果用户量大,需要做时间判断,防止同时访问量多时多次重复处理,影响服务器性能)
如果能确定一个用户的访问,只有一个浏览器窗口,可以在窗口里加一个关闭事件(onbeforeunload),在此事件中发送一个退出请求,主动设为离线状态。这样状态管理会更完美一些
这样基本就可以完成一个在线状态的管理。具体n 设为多少可根据情况而定,一般5-30秒都是合理的,太短了服务器压力比较大,太长了误差会比较大
Ⅲ php中如何设置session时长,使得用户登录一次之后保证3天内不用重复登陆
你好,首先你得搞清楚session的机制,
你的session 时间哪怕你设置10年,只要用户一关浏览器那你的session就失效了.
session 是运行在服务器端的.
你的这个需求3天内不用再登录只能用cookie来做了,
cookie运行在客户端,但是用户清理了cookie的话此功能就会失效
Ⅳ 请问PHP+MYSQL的网站,注册用户在五万,每天登陆一次的用户在80%且停留时间比较长,网站服务器该如何布局
两台戴尔R710即可,一台做web,一台做数据库,服务器带宽50m差不多够用。
需要托管服务器的话可以找我
Ⅳ 用php如何实现统计用户在线登陆的时间
用户每做一个动作记录当时的时间和上一个动作的时间差 ...
之后为用户添加相应的时间积分就可以了 ...
Ⅵ php如何利用session和mysql数据库来统计用户在线时常
您好,很高兴回答您的问题,希望我的回答能帮助到您,蟹蟹
用户在线时长计算,首先,用户登录成功把登录时间以及用户id保存在session中
当用户退出时,当前时间减去登录时间就是用户在线时长
//用户登录
publicfunctiondologin(){
$adminname=I("param.adminname","","trim");//用户名
$password=I("param.password","","trim");//密码
$where="adminname='{$adminname}'andpassword=md5('{$password}')";
$data['login_time']=time();
$is_find=M("users_admin")->where($where)->find();
if($is_find){
$result=M("users_admin")->where($where)->setField($data);
if($result){
$_SESSION['uid']=$is_find['id'];
$_SESSION['login_time']=$data['login_time'];
echo("登录成功");
}
}
}
//用户退出代码
publicfunctionlogout(){
$login_time=$_SESSION['login_time'];
$now=time();
$line_time=$now-$login_time;
$result=M("users_admin")->where("id=".$_SESSION['uid'])->setField('line_time',$line_time);
session(null);
echo("成功退出");
}
Ⅶ php中如何统计用户在线时长
可以通过session记录。
从创建该用户session(用户登录)到删除其session(用户退出),计算出时间,写入数据库进行统计。
Ⅷ 请问PHP的在线学习时间统计功能如何实现(例:上次学习了10分钟,这次学习了20分钟15秒,那么如何让这两次
相加就好了,每个值存在一个变量里。
Ⅸ 求助关于PHP,用户登陆后长时间未操作,自动注销,该怎么做谢谢!
如果你对session生命周期不了解的话
可以用最底层的代码写
给你个思路
先用session保存用户这次登录时间 $_SESSION[‘ptime’]= time();
然后写个判断就OK如果你想在半个小时后自动退出
$nowTime=time();
if($nowTime-$_SESSION['ptime']>30*60){
//注销SESSION;再写个跳转或者提示 就OK了
}
Ⅹ PHP用心跳机制计算用户页面的停留时长,没接触过,有谁能给个源码案例,或者给个好的思路也行
先用javascript的秒表功能一直计时,然后每次更新后的时间都存入本地的数据库,也就是local.Storage
做一个setTimeout 用来每20分钟alert,
然后 当 刷新页面的时候,就会检查local.storage里面有没有值,如果有的话
就从当前的值开始计时,就达到了继续计时的效果