一、如果登录时保存了Cookie,那么就要在关掉浏览器才叫不在线,你可以试一下,微软登录后,你在同一个浏览器进程上开几个网页,把微软的关掉,再访问微软的,一样是登录状态,也即是讲,如果浏览器进程关掉,才是不在线。二、你可以搞个SESSION,记录第一次登录时间,然后每在你的网页上操作一次,就把SESSION的登录时间改成现在的,即是ONLINE的时间截,然后那个客户端再操作多次,就有两种情况:
(假如超时是3分钟):
1、超时,则拿现在的时间截,和上次的时间截对比,如果超过3*60秒的话,则不在线,要重新登陆。2、在三分钟之内,和上次对比,不超过则继续操作,不需要重新登陆。
(假如超时是3分钟):
1、超时,则拿现在的时间截,和上次的时间截对比,如果超过3*60秒的话,则不在线,要重新登陆。2、在三分钟之内,和上次对比,不超过则继续操作,不需要重新登陆。
判断是否登录,如果你登录注册了一个SESSION,当浏览器关掉时,SESSION的客户端ID会失效,也就可以说是没有登录,然后你的php.ini的SESSION超时默认是20分钟期限,所以在20分钟后自动删除掉SESSION,这就完全注销。所以用SESSION基本上不用什么设置,但是最好就是配合使用,否则会有安全问题(如果黑客知道了某个客户端访问的SESSION的唯一ID号,那就可以冒充已经登陆了,但基本上没这个可能)
1,怎样在用户关闭浏览器10分钟后自动更新isonline的值.
2,怎样获取关闭浏览器的时间
让session仅仅有一个作用.党浏览器存在cookie时判断session与上一次关闭浏览器到下一次打开浏览器时间隔时间,如果这段时间超过了预设,就更新isonline,如果没有超过,就不更新即
if(!empty($_cookie[cookiename]))
{
if(session间隔时间>10分钟)
{
$db_conn->query(update .........isonline=0);
}}但是我应该怎样取得session的间隔时间,请朋友给段代码。麻烦了
我也不知道这样合理不合理,但是我觉得这样判断还行,哈哈,
如登录文件为login.php,内容为:
<?php
//怎样登录的操作
//这里是登录的时间
$_COOKIE['time']=time();//第一次登录时间
?>然后,这里是你登录后的操作,因为这里要改变登录时间,要不登录后,10分钟内无论操作还是没有操作,10分钟后就会认定不在线了。所以每次访问你的PHP文件,都要有:
<?php
$_COOKIE['time']=time();//改变第一次登录时间,防止客户无论怎样,都会在10分钟后无效
?>这个是判断是否在线:
if(!empty($_cookie[cookiename]))
{
$iftime=time()-$_COOKIE['time'];//判断未操作时间
if($iftime>10)//判断是否超时
{
$db_conn->query(update .........isonline=0);
}
else
{
$_COOKIE['time']=time();//这样可以把用户定为已经登录了
}}