今天遇到案例需要用到在线会员列表。这到是个常见的功能,不过在企业网站上很少遇到这种需求。
不过客户既然提出来了,我们技术员一定要努力办到。
会员在线思路:php mysql session 技术三结合
session记录在线会员信息
mysql保存数据库
php操作 显示 及更新
建表 CREATE TABLE yinwen_userlist (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`user_id` INT NOT NULL ,
`indate` CHAR( 200 ) CHARACTER SET gbk COLLATE gbk_chinese_ci NOT NULL ,
`inip` CHAR( 200 ) CHARACTER SET gbk COLLATE gbk_chinese_ci NOT NULL
) TYPE = MYISAM CHARACTER SET gbk COLLATE gbk_chinese_ci;
$date1=time();//取得当前时间戳
$date2=$date1-1800;//半个钟前的时间戳
$sql=\"delete from userlist where iddate<\'$date2\'\";//删除半个钟没活动的用户
mysql_query($sql);//执行删除
把这个包函在网站的页就能做到了全员在线的时时更新了。
至于如何把登录的全员添加到表userlist呢,只要在用户登录时添加如下代码就OK了
$in_date=time();
$user_id=;//把用户登录的ID传值,一般用COOKIE实现,或session,这看程式员自己决定
$inip=$_SERVER[\'REMOTE_ADDR\'];//这个是取用户登录的IP
$sql=\"insert into userlist(in_date,user_id,inip) values(\'$in_date\',\'$user_id\',\'$inip\')\";
mysql_query($sql);
OK,这样就添加了登录用户的在线的信息了。
还有退出的也要删除哦,在退出时,处理代码:
$user_id=;//把用户登录的ID传值,一般用COOKIE实现,或session,这看程式员自己决定
$sql=\"delete from userlist where user_id=‘$user_id’\";
mysql_query($sql);
OK,把退出登录的用户从会员在线表中删除的功能也好了。
这样看起来已经都OK了,还有一个没完善的地方,就是会员的动作,也就是登录后再看其它相关页,是在线状态,但这里还没做得登录时间的及时更新,好,再把这个代码完善一下:
$user_id=;//把用户登录的ID传值,一般用COOKIE实现,或session,这看程式员自己决定
$indate=time();
$sql=\"update userlist set indate=\'$indate\' where user_id=\'$user_id\'\";
mysql_query($sql);
好了,把上面的更新代码放在以下代码的上面的,也就是刚才说包函在网站的网页中的代码上面:
$date1=time();//取得当前时间戳
$date2=$date1-1800;//半个钟前的时间戳
$sql=\"delete from userlist where iddate<\'$date2\'\";//删除半个钟没活动的用户
mysql_query($sql);//执行删除
OK,这样的半个钟会员在线用户也就做好了,当然网上有的是用数据库表的时间性来做的,那个性能可能会更好,也更合适用,但这给初学者一个思路。