700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > php会员统计系统 php 的会员统计

php会员统计系统 php 的会员统计

时间:2018-06-13 18:09:30

相关推荐

php会员统计系统 php 的会员统计

编程思路

在社区、论坛中,我们常能看到当前在线的会员,使访问者有宾至如归之感。但这种程序是怎么做出来的呢?

流程如下:

建表user,保存注册用户信息。

字段 类型 备注

userid Int(10) 用户序列号 auto_increment 关键字

username Varchar(50) 用户匿称

userpwd Varchar(50) 密码

email Varchar(50) 电子信箱

oicq Varchar(50) OICQ号

signature mediumtext 签名

imgurl Varchar(50) 头像

joindate Varchar(50) 加入时间

建类文件user.php 定义函数

exist($username)确认新注册用户是不是已经存在

insert($username,$userpwd,$email,$oicq,$imgurl,$signature)插入注册用户

update($userid,$username,$userpwd,$email,$oicq,$imgurl,$signature) 更新用户数据

get_from_condition($con) 返回满足查询条件的记录集

建表session。当用户登录时即向此表插入新记录,离开或超时后删除记录,保证表中保存的是当前在线的用户。

字段 类型 备注

sessionid Int(10) 序列号 auto_increment 关键字

userid Int(10) 用户序列号取自user表

ipaddress Varchar(50) Ip地址

lastactivity Int(10) 最后活动时间,用它来判断用户是否还在线

建类文件session.php 定义函数

insert($userid,$ipaddress,$lastactivity) 把登录成功的用户插入到表中

update($userid,$ipaddress,$lastactivity)更新在线用户最后活动时间

del($con)删除满足条件的用户,用它来清除离线用户

get_from_condition($con) 返回满足查询条件的记录集

公用文件global.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;

}

登录文件logon.php

include "global.php"; //把global.php文件包含进来

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;

}

?>

测试文件test.php

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;

?>

退出社区

退出文件exit.php

include "global.php"; //把global.php文件包含进来

if ($_SESSION["online"]=="on"){

$con="userid=$userid";

$session->del($con); //在session表中删除用户信息。

session_destroy(); //结束当前的会话,并清空会话中的所有资源

echo "已经退出社区......";

}

?>

阅读(2091) | 评论(1) | 转发(1) |

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。