很多站长朋友们都不太清楚php用户在线判断,今天小编就来给大家整理php用户在线判断,希望对各位有所帮助,具体内容如下:
本文目录一览: 1、 php中如何判断用户是否在线 2、 关于php或者JS判断用户是否已经登陆/在线?请具体demo 3、 php聊天室怎么判断用户是不是在线? 4、 php 用户是否在线 5、 PHP网站中,如何判断用户是否是在线的状态? php中如何判断用户是否在线代码很简单,但实现逻辑自己要想明白,
网站头公共文件加下边代码,意思即每个页面都有包含下面这个php代码,总之你懂,
这样,只要有用户登陆,或者打开别的页面,就会往 all_user 表里 的action_time字段添
加操作时间, 当你检测用户是否在线,就把用户操作时间action_time转化为 几分钟前,小时前,
,知道每个用户是 几分几小时前操作,就可以把几分钟前的显示在线,而几小时前的,显示离线或几小时前,
例如用户15:30分登陆,打开几个页面,然后就关电脑或出门, 这时all_user 表已经记录了操作时间
网站可以用 wordTime($time)显示他的操作时间离现在为2分钟前,或20分钟前,将直接显示在线。
至于多少分钟不操作算离线,自己调分钟数
<?php
strtotime("now"); //取服务器当前时间戳,得到值如1533213376
$sql="UPDATE all_user SET action_time=$action_time WHERE userid=$cook_userid";
//往用户表里更新 操作时间,具体要填自己的表名和用户名的 字段名
?>
//======================下边功能代码可copy 直接用
<?php
function wordTime($time) {
$time = (int) substr($time, 0, 10);
$int = time() - $time;
$str = '';
if ($int <= 2){
$str = sprintf('在线', $int);
}elseif ($int < 60){
$str = sprintf('在线', $int); //60秒内
}elseif ($int < 300){
$str = sprintf('在线5', $int); //5分钟内
}elseif ($int < 1800){
$str = sprintf('在线+', floor($int / 60)); //30分钟内
}elseif ($int < 3600){
$str = sprintf('%d分钟前', floor($int / 60)); //30-60分钟内
}elseif ($int < 86400){
$str = sprintf('%d小时前', floor($int / 3600));
}elseif ($int < 2592000){
$str = sprintf('%d天前', floor($int / 86400));
}elseif ($int < 2592000*30){
$str = sprintf('%d月前', floor($int / 2592000));
}else{
$str = "";//date('Y-m-d', $time);
}
//调用方法,把值给到变量time 如: $time="1533213376"; echo wordTime($time); 结果将输出 20分钟前
?>
不存在频繁操作数据库问题,因为打开网页都要查询mysql 用户名等这些,也不差这条更新命令,
关于php或者JS判断用户是否已经登陆/在线?请具体demo可以利用cookie记录登录状态,特意写了个例子,已做过测试,仅供参考。
两个文件:login.php(登录)、question.php(提交问题)。
login.php代码如下:
<?php
if($_GET['success']){
echo '<script>window.location.href="login.php";</script>';//firefox下cookie有延时,需要再次刷新
}
$user=$_COOKIE['user'];//取cookie中的值
$iflogin=$_COOKIE['iflogin'];
if($iflogin$user){//一小时之内不用重复登录
if($_GET['del']){ //清除cookie
setcookie('user','',time()-3600);
setcookie('passwd','',time()-3600);
setcookie('iflogin','',time()-3600);
echo '<script>window.location.href="login.php";</script>';
}
echo $user.' wellcome, <a href="login.php?del=1">log out</a>';//登录成功的状态
}else{
if($_POST['sub']=='tijiao'){
$user=$_POST['user'];
$passwd=$_POST['passwd'];
//将用户、名密码与用户表进行比对,省略……
//如果正确,将登录相关信息保存到cookie中
if($user$passwd){
setcookie("user",$user,time()+3600);//保存用户名,一小时
setcookie("passwd",$passwd,time()+3600);//保存密码,一小时
setcookie("iflogin",1,time()+3600);//保存登录状态,一小时
}
//登录成功,刷新页面或跳转
echo '<script>window.location.href="login.php?success=1";</script>';//成功后第一次刷新
}
?>
<form action="login.php" method="post">
username:<input type="text" name="user"/>
password:<input type="text" name="passwd"/>
<input type="submit" value="tijiao" name="sub"/>
</form>
<?php
}
?>
question.php代码如下:
<?php
if($_POST['sub']=='tijiao'){
$q1=$_POST['q1'];
$if_login=$_COOKIE['iflogin'];//取cookie中的登录状态
if($if_login){
//登录了,判断tijiao的问题无误,入库,省略……
alert_msg('恭喜,tijiao成功!','question.php');//保存成功后提示并刷新
exit();
}
//没登陆,提示请登录并跳转到登录页
alert_msg('抱歉,请先登录!','login.php');
}
//提示函数,默认不跳转,当$url有值时跳转
function alert_msg($msg,$url=''){
if($url){
echo '<script>alert("'.$msg.'");window.location.href="'.$url.'";</script>';
}else{
echo '<script>alert("'.$msg.'");</script>';
}
}
?>
<form action="question.php" method="post">
question1:<input type="text" name="q1"/>
<input type="submit" value="tijiao" name="sub"/>
</form>
php聊天室怎么判断用户是不是在线?聊天室肯定是登陆状态,用户表可以加个字段 比如status 登陆为1 不登陆为0 统计为1的个数
在页面写个ajax调用 每分钟调用一次 实时统计 或者每分钟刷新页面 望采纳!
php 用户是否在线用户表新增一个字段,用于判断是否在线,
登陆的时候,将字段设置为1
退出的时候,将字段设置为0
PHP网站中,如何判断用户是否是在线的状态?普通http网站是一种无状态连接,每次一个请求,一个应答,没有长连接状态。
但是可以通过记录访问时间,来确定用户的状态。
用户登录后,每次访问,更新一下最近访问时间在数据库里
在用户页面的公共部分,做一个定时轮询,n秒一次(防止用户打开页面后放着不动,看资料或者做别的)
服务器端做一个定时,将最近时间在n秒内的用户设为在线状态,将最近时间大于n秒的(说明已经关了页面),设为离线状态。 如果是普通 web空间无法配置定时器,可以在每次用户访问时处理一次(如果用户量大,需要做时间判断,防止同时访问量多时多次重复处理,影响服务器性能)
如果能确定一个用户的访问,只有一个浏览器窗口,可以在窗口里加一个关闭事件(onbeforeunload),在此事件中发送一个退出请求,主动设为离线状态。这样状态管理会更完美一些
这样基本就可以完成一个在线状态的管理。具体n 设为多少可根据情况而定,一般5-30秒都是合理的,太短了服务器压力比较大,太长了误差会比较大
关于php用户在线判断的介绍到此就结束了,不知道本篇文章是否对您有帮助呢?如果你还想了解更多此类信息,记得收藏关注本站,我们会不定期更新哦。
查看更多关于php用户在线判断 php或者判断的详细内容...