声明:本人对php只是略知一二,有不对的地方请更正.
设计思路:利用online的数据表和session一起来解决在线用户(包括游客和注册用户)的统计。
设计准备:在数据库中建立一个存放在线用户信息的online数据表,字段可包括
create table online(
id int(8) default'0' not null auto_increment,
user varchar(16),
randid int(10),
reg tinyint(1) default'0',
timeto datetime,
);//其中user用来存放注册用户的用户名,randid用来标识游客),timeto存放用户超时的时间
变量约定:username为注册用户的用户名(仅可存在于session中)
randid为游客用户的标识号(仅可存在于session中)
//////////////////////////////////////////////////////////////////////
处理步骤

关键)
㈠session开始,
㈡删除online表中timeto时间比现在时间小的表目(即超时用户)
㈢判断session中是否有username变量
①session中存在username变量的值,则判断在online的数据表中是否存在user字段的值等于变量username的值
A,online表中有某个表目值等于username,则更新online表中该用户的timeto时间。
B,online表中没有表目等于username,则结束username的session,建立一个randid的session,其中reg字段设置为0,user字段设置为空。
②session中不存在username变量的值,则判断session中是否存在randid的值。
A,session中存在randid的值,则判断在online表中是否存在randid字段等于$randid变量的值
⑴online表中存在一个字段值等于$randid的值,则更新online表中该用户的timeto时间。
⑵online表中没有表目的值等于$randid的值,则将这个randid及相关值插入数据表online中。
B,session中不存在randid的值,则建立一个新的session,其中记录的是randid变量,且插入到数据表online中去。
///////////////////////////////////////////////////////////////
至此结束了online的处理...
请大家赐教,
QQ:886513
Email:cto@51sleep.com