php开发的网站,用户已登陆的状态下,有些时候刷新后既然变成其他用户的账号了,而且个人中心也是其他用户的。这一般是什么情况。是有些时候,不会经常这样,概率7%左右。特别是在qq浏览器下,其他浏览器也出现过。这很影响网站运营,而且用户不安全,有些用户利用这问题,盗用用户资金。这该怎么解决。主要什么问题造成的,好有思路解决。跪求开发大牛帮忙指点。高分奖励,
第1个回答 2014-09-07
这个应该和你的验证有关吧,cookies或session也有可能是你的模式用的单例模式,无论你是哪种验证方式,但要唯一属性,比如,用户名和用户ID等,然后通过算法来答到该用户在全局的环境里有唯一的标识,这种就不会造成用户混乱问题。
第2个回答 2014-08-29
你用户登录是用什么来记录的,如果是cookie的话,一般不会有这个问题,估计是用session来记录的,查看session是不是有相同的key了,如果key相同,用户就会读到同一个人账户追问
就是cookie。而且还没用session
追答cookie的话,检查你用户存在本机的呀,不太可能被共享使用的呀
你最好记录下用户的IP等用户信息,进行分析检查
第3个回答 2014-09-01
一般这个情况做的时候都不会出现,把用户数据全加密后放入$_session里面。
举个例子比如:
登录验证这个用户账号密码后,给出两个$_session。
<?php
session_start();//这个得放在PHP文档里最前面
$session['变量名a']=md5("随意一个常量"."密码");
$session['变量名b']="用户ID"
?>
到需要验证登录状态的页面里
<?php
session_start();//这个得放在PHP文档里最前面
//在数据库里搜索$session['变量B']
if($session['变量b']!=md5("随意一个常量"."数据库里用户密码");){echo "非法登陆";}//搜索到的密码判断
?>
举个例子比如:
登录验证这个用户账号密码后,给出两个$_session。
<?php
session_start();//这个得放在PHP文档里最前面
$session['变量名a']=md5("随意一个常量"."密码");
$session['变量名b']="用户ID"
?>
到需要验证登录状态的页面里
<?php
session_start();//这个得放在PHP文档里最前面
//在数据库里搜索$session['变量B']
if($session['变量b']!=md5("随意一个常量"."数据库里用户密码");){echo "非法登陆";}//搜索到的密码判断
?>
第4个回答 2014-08-30
登录后你是怎么保存会员信息的,cookie,session 吗?也许是你摸个页面和之前的cookie,session 冲突了。导致会显示别的用户信息。
第5个回答 2014-08-31
cookie中只保存了用户名吗?最好再保存另外一个加密的数据(如一个随机数,当然数据库中也得保存),检查用户名与该数据是否对应,防止cookie欺骗。