当前位置:首页 » 编程语言 » php判断用户在线

php判断用户在线

发布时间: 2022-09-07 10:39:16

Ⅰ 关于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,<ahref="login.php?del=1">logout</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>';//成功后第一次刷新
}
?>
<formaction="login.php"method="post">
username:<inputtype="text"name="user"/>
password:<inputtype="text"name="passwd"/>
<inputtype="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有值时跳转
functionalert_msg($msg,$url=''){
if($url){
echo'<script>alert("'.$msg.'");window.location.href="'.$url.'";</script>';
}else{
echo'<script>alert("'.$msg.'");</script>';
}
}
?>
<formaction="question.php"method="post">
question1:<inputtype="text"name="q1"/>
<inputtype="submit"value="tijiao"name="sub"/>
</form>

Ⅱ php是如何判断在线用户的

1.用户登录.如果用户名和密码正确.则将用户名或者其他唯一的值赋值给session("username")
2.将session("username")存入数据库.
3.定时检查session("username")还是否有效.如有效,则在线.

Ⅲ php利用session怎么判断用户已离线

方法有好多种,但应该都跟心跳请求类似。
首先用户打开一个页面后,页面里面会有段js脚本来反复请求一个地址,即判断用户是否在线的地址(跟新浪微博隔一段时间请求一个地址查看是否有新消息类似)
比如判断页面为A,打开的页面为B ,则B 内的js脚本以ajax请求的方式每隔1分钟来访问A,A可以记录下最后一次的请求时间,然后你就可以拿这个最后一次请求的时间来判断用户是否离线,比如B每隔1分钟发送一次请求,如果最后活动时间与当前时间相差两分钟,就可以认为用户已离线。

还有一种方法,就是利用js的onunload事件
当用户关闭浏览器的时候,可以用onunload发送一个请求,注销掉session,或者将用户状态置为离线,都可以,不过没有上面靠谱就是,因为F5刷新页面也同样触onunload事件

方法还有很多,结合你需要实现的功能和业务,多想想就出来了

Ⅳ php聊天系统怎么样判断用户是不是在线

这个其实有很多种处理方案,我给两个方案吧,

方案一、用户登陆成功后,将用户的信息,如用户ID保存到session当中去,然后我们去判断session当中是否有当前用户ID就可以判断出该用户是否在线了,然后用户退出的时候,将此session清除就可以啦;

方案二、
用户表设置一个字段,用于保存用户的登陆状态,如果用户登陆成功才设置成1,否则设置成0,然后当要判断用户是否登陆的时候,只要到数据库当中去取这个值判断就可以啦,用户退出前,要先将这个状态Update成0状态就可以啦,不过这样的话,当由于断电而非法关闭的时候,用户状态就没有办法更新到数据库当中啦;

两个方案自认为还是方案一要好些啦;

Ⅳ php怎么检测某个用户已登录

加入用户登录的阶段变量是Username,那么用判断语句则是:
如果不用HTML代码的如下:
<?php
if($_SESSION['Username']==""){
echo "您未登陆!";
}else{
echo "您已登陆!"
} ?>
如果用HTML代码的如下
<?php if($_SESSION['Username']==""){ ?><table><tr><td>您已经登陆了!</td></tr></table><?php }else{ ?><table><tr><td>您未登陆或登陆超时!</td><td><a href="#">去登陆</a></tr></table><?php } ?>
解释:
<?php
如果(阶段变量['Username']完全等于空)显示
您未登录
否则显示
您已登录
?>

Ⅵ php中如何判断用户是否在线

代码很简单,但实现逻辑自己要想明白,

网站头公共文件加下边代码,意思即每个页面都有包含下面这个php代码,总之你懂,
这样,只要有用户登陆,或者打开别的页面,就会往all_user表里的action_time字段添
加操作时间,当你检测用户是否在线,就把用户操作时间action_time转化为几分钟前,小时前,
,知道每个用户是几分几小时前操作,就可以把几分钟前的显示在线,而几小时前的,显示离线或几小时前,

例如用户15:30分登陆,打开几个页面,然后就关电脑或出门,这时all_user表已经记录了操作时间
网站可以用wordTime($time)显示他的操作时间离现在为2分钟前,或20分钟前,将直接显示在线。
至于多少分钟不操作算离线,自己调分钟数
<?php
strtotime("now");//取服务器当前时间戳,得到值如1533213376

$sql="UPDATEall_userSETaction_time=$action_timeWHEREuserid=$cook_userid";
//往用户表里更新操作时间,具体要填自己的表名和用户名的字段名

?>//======================下边功能代码可直接用
<?php
functionwordTime($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";echowordTime($time);结果将输出20分钟前
?>

不存在频繁操作数据库问题,因为打开网页都要查询mysql 用户名等这些,也不差这条更新命令,

Ⅶ php做用户在线与离线状态

在用户表里加个session字段存取时间戳。在文件头每次刷新就更新它。一定时间不刷新就表示人物离线了。读取这个会员数据的时候和当前时间戳对比小于一定数就离线了

Ⅷ PHP网站中,如何判断用户是否是在线的状态

普通http网站是一种无状态连接,每次一个请求,一个应答,没有长连接状态。

但是可以通过记录访问时间,来确定用户的状态。

  1. 用户登录后,每次访问,更新一下最近访问时间在数据库里

  2. 在用户页面的公共部分,做一个定时轮询,n秒一次(防止用户打开页面后放着不动,看资料或者做别的)

  3. 服务器端做一个定时,将最近时间在n秒内的用户设为在线状态,将最近时间大于n秒的(说明已经关了页面),设为离线状态。 如果是普通 web空间无法配置定时器,可以在每次用户访问时处理一次(如果用户量大,需要做时间判断,防止同时访问量多时多次重复处理,影响服务器性能)

  4. 如果能确定一个用户的访问,只有一个浏览器窗口,可以在窗口里加一个关闭事件(onbeforeunload),在此事件中发送一个退出请求,主动设为离线状态。这样状态管理会更完美一些

这样基本就可以完成一个在线状态的管理。具体n 设为多少可根据情况而定,一般5-30秒都是合理的,太短了服务器压力比较大,太长了误差会比较大

Ⅸ php如何实现判断用户是否在线的功能

其实HTTP协议是无连接的,数据交换完毕就断开了,理论上服务器上无论用什么语言写的程序,都不可能知道客户端的用户是否在线。

一般的办法都是客户端打开网页的时候,记录一下最后打开时间,我们假释打开一个页面会保留多长的时间(比如10秒),那么只要最好打开网页的时间到现在没有超过这个限度的就叫做在线,超过的就是离线。

热点内容
中控大屏怎么看配置 发布:2025-01-13 13:11:33 浏览:912
linux多行删除 发布:2025-01-13 13:06:01 浏览:200
传奇3脱机脚本 发布:2025-01-13 13:05:08 浏览:751
java请求https 发布:2025-01-13 12:53:35 浏览:868
SQL限定符 发布:2025-01-13 12:46:19 浏览:145
挂号系统php源码 发布:2025-01-13 12:39:04 浏览:581
存储器通史是什么 发布:2025-01-13 12:38:11 浏览:405
可以捏的解压器怎么做 发布:2025-01-13 12:32:16 浏览:524
ios的java编译器 发布:2025-01-13 12:12:54 浏览:616
安卓手机如何看wifi使用人数 发布:2025-01-13 12:08:10 浏览:953