用户A登陆,记录登陆信息(SESSION或COOKIE)--刷新每次的活动时间(操作a)-->接着-》 -->停止活动 |>>>>规定时间内有动作,返回(操作a) |>>>>规定时间内无动作,update user set active=0 |>>>关闭浏览器--end |>>>用户接着活动 |>>>>如果还有登陆信息的记录--->update user set active=1 |>>>>如果没有登陆信息记录---->登陆页面
汗~~~乱套了~~排版一下~~用户A登陆,记录登陆信息(SESSION或COOKIE)--刷新每次的活动时间(操作a)-->接着-》 -->停止活动 |>>>>规定时间内有动作,返回(操作a) |>>>>规定时间内无动作,update user set active=0 |>>>关闭浏览器--end |>>>用户接着活动 |>>>>如果还有登陆信息的记录--->update user set active=1 |>>>>如果没有登陆信息记录---->登陆页面
会员变成m+1个,怎么解决这个?其实我是根据ip来判断的,但是还有一个问题,用户如果有两个帐号,如果用户用帐号A登陆了,然后注销,然后用帐号B登陆,这应该算一个ip,感觉挺麻烦的
不知道哪个大虾有写好的代码,贴出来欣赏一下
-->停止活动
|>>>>规定时间内有动作,返回(操作a)
|>>>>规定时间内无动作,update user set active=0
|>>>关闭浏览器--end
|>>>用户接着活动
|>>>>如果还有登陆信息的记录--->update user set active=1
|>>>>如果没有登陆信息记录---->登陆页面
-->停止活动
|>>>>规定时间内有动作,返回(操作a)
|>>>>规定时间内无动作,update user set active=0
|>>>关闭浏览器--end
|>>>用户接着活动
|>>>>如果还有登陆信息的记录--->update user set active=1
|>>>>如果没有登陆信息记录---->登陆页面
这个问题最好的解决办法是session,把session写入数据表,session超时就说明他吊线
然后查询记录
$num=0;
$dirpt = "online";
$reftime = 1;if (is_dir($dirpt) && $dir = opendir($dirpt)) {
while (($file = readdir($dir)) !== false) {
if(strcmp($file,"..")==0 || strcmp($file,".")==0){
continue;
}
$D_[date("Y-m-d H:i:s",filemtime($dirpt."/".$file))]=$file;
$num++;
unset($cum);
}
closedir($dir);
$filename = session_id();
$fp = fopen($dirpt."/".$filename,"w");
fputs($fp,"");
fclose($fp); $ntime = date("Y-m-d H:i:s",mktime(date("H"),date("i")-1,0,date("m"),date("d"),date("Y")));
$D_[$ntime]="-";
krsort($D_);
$onlinenumber=0;
while(1){
$vkey=key($D_);
$onlinenumber++;
if(strcmp($ntime,$vkey)==0){
break;
}else{
array_shift($D_);
}
}
array_shift($D_);
reset($D_);
while(count($D_)>0){
$ckey=key($D_);
unlink($dirpt."/".$D_[$ckey]);
if(!next($D_)){
break;
}
}}else{
@chmod("..",0777);
@mkdir($dirpt,0777);
}
$online=$onlinenumber-1;
$retime=60*$reftime;
?>
这是一个算在线的代码,没有注节,哪位大侠加上注节,发出来!