Maison > Article > développement back-end > php实现在线用户计算_PHP教程
include "class/config.inc.php"; //把配置文件包含进来
$db = new db;
$db-> db_connect( ); //连接数据库
$user = new user; //初始化
$session = new session;
//启动会话
session_start();
//删除session表中已经过期的用户(即非在线网友)因为此文件总是被调用从而保证显示的都是当前在线的用户
$curtime=time();
$con="lastactivity
$session->del($con);
//正在线的网友需不断更新session表中的lastactivity时间,并重新设置用户的COOKIES
if ($HTTP_SESSION_VARS["online"]=="on"){ //此处也可用$_SESSION[“online”]
$userid=$HTTP_SESSION_VARS["userid"]; //取当前在线用户的userid
$ipaddress=substr($REMOTE_ADDR,0,50);
$lastactivity=time()+3600; //更新最后活动时间,如时一个小时之内未调动页面就认为用户已离线,从而会被删除。
$session->update($userid,$ipaddress,$lastactivity);
}else{
//如果未登录那直接转入登录页面
$firstpage="logon.php";
header ("Location: $firstpage");
exit;
}
insert($userid,$ipaddress,$lastactivity) 把登录成功的用户插入到表中
update($userid,$ipaddress,$lastactivity)更新在线用户最后活动时间
del($con)删除满足条件的用户,用它来清除离线用户
get_from_condition($con) 返回满足查询条件的记录集
if ($hiddenField=="0"){ //测检表单有未被提交
$con="username='$username' and userpwd='$userpwd'";
$result=$user->get_from_condition($con);
if ($user->counter==1){
if (!session_is_registered("online")){//检测是否被登记过
session_register("online"); //登记一个新的变量为会话变量
}
if (!session_is_registered("ccauser")){
session_register("ccauser");
}
if (!session_is_registered("userid")){
session_register("userid");
}
$ccauser=$username; //给会话变量赋值
$online="on"; //这个变量在global.php用到以更新最后活动时间lastactivity
$userid=$user->userid;
$ipaddress=substr($REMOTE_ADDR,0,50);
$lastactivity=time()+3600;
$con=" userid=$userid";
$session->get_from_condition($con);
//判断会话是否存在,有可能你在不同的机器上登两次。
if ($session->counter==1){
$session->update($userid,$ipaddress,$lastactivity); //如存在,更新
}else{
$session->insert($userid,$ipaddress,$lastactivity); //如不存在,插入
}
//在客户机设置COOKIES
SetCookie("ccauser",$username,time()+3600);
Header("Location:test.php");//然后导向测试页
}
}
?>
if($HTTP_SESSION_VARS["online"]=="") { //判断是否已登录
?>
//下面是登录的表单
名称:
密码:
}else{
echo "网友:".$HTTP_COOKIE_VARS["ccauser"]."你已经登录了"; //如果已登录则显示提示
$str="
退出社区";
echo $str;
}
?>
include "global.php"; //把global.php文件包含进来
$strWelcome="欢迎".$_SESSION['ccauser']."
";
echo $strWelcome; //显示欢迎信息
$str=” 当前在线用户:
===================
”;
$con=" 1=1";
//提出session表中所有记录即是当前在线用户,未把游客算在内
$result=$session->get_from_condition($con);
while($row=mysql_fetch_array($result)){
$con1="userid=$row[userid]";
$user->get_from_condition($con1);
$str.=$user->username." ";
}
echo $str;
?>
退出社区