有道理,不过,进入主页面时,没有问题,即第一次进入没问题,调用不包含session 的PHP网页是的可以的,一用含session 的就不能用错误如下: Warning: session_start(): open(session/\sess_e934e59ab54d3d6ad191ec709b415169, O_RDWR) failed: No such file or directory (2) in H:\Apache2\htdocs\student\stud_info.php on line 3Warning: session_start(): Cannot send session cookie - headers already sent by (output started at H:\Apache2\htdocs\student\stud_info.php:3) in H:\Apache2\htdocs\student\stud_info.php on line 3
这样就可以实现同一样用户不允许同时登录的现像了,我是这么做的
至于session的数据库存取,可以查看最新英文php手册关于session_set_save_handler的介绍,写一个自己的session处理函数。也可以搜一下现成的类,不过有的地方要自己修改,别人写的类里面没有用户id字段,一般只有session_id exp_time session_data 三个字段,只要稍微修改就可以。
1、在验证用户名和密码的表中加入一字段,表示登陆状态。假设数值1为已
登陆,为0则未登陆。
2、在用户登陆时同时判断该用户名的登陆状态是否为已登陆,如为已登陆
则禁止登陆。
3、用户正常退出的时候,将用户登陆状态改为未登陆。
4、考虑到会有用户不使用正常退出方法。楼主可在首页上加一段程序,检查
所有SESSION(这要求楼主在写程序的时候选设定一个SESSION PATH),用户
最后行动时间是否超过30分钟(或自己定个时间),如超过,则将该用户名
的登陆状态改为0。个人建议,供楼主参考
php默认的session save handle是file,可以在临时目录找到这些临时文件,缺点是没有全局变量,session里的数据是独力的。
其实研究一下ipb论坛程序的数据表就能看出,ipb也是利用数据表来存取session数据的,研究一下它的session机制就不难完成这个任务。数据表存取session的缺点可能就是性能了,如果登录太多人,数据库能否承受?就看你如何优化了,呵呵
还有设置
session.cookie_domain = 你的域
可以解决这个问题
换句话说就是:别人是看不到我的session的
所以仅用session是不能达到你的目的的,你要用Application而不是session才能达到目的
鉴于php并无Application,所以请考虑采用 lzkd(浪子快刀) 的方案
你打开一个窗口,用一个用户名登陆以后,再打开新窗口,重新注册一个帐户登陆,然后刷新前者的窗口,前者也会变成后者的窗口。注:该站用session保存用户名密码。
有道理,不过,进入主页面时,没有问题,即第一次进入没问题,调用不包含session 的PHP网页是的可以的,一用含session 的就不能用错误如下:
Warning: session_start(): open(session/\sess_e934e59ab54d3d6ad191ec709b415169, O_RDWR) failed: No such file or directory (2) in H:\Apache2\htdocs\student\stud_info.php on line 3Warning: session_start(): Cannot send session cookie - headers already sent by (output started at H:\Apache2\htdocs\student\stud_info.php:3) in H:\Apache2\htdocs\student\stud_info.php on line 3