我有一个使用代码点火器框架在php 7中内置的应用程序,而我的问题是会话数据,存储和检索会话数据工作正常,但是偶尔两个人以近间隔登录时,会话数据对于第一个用户,对于第二个用户也是如此,在网站上进行搜索,发现此处类似{wrong data in PHP session),这可能是一个缓存问题(我的网站使用nginx进行缓存),但是没有具体解决方案被建议。任何建议或想法将不胜感激。
编辑:这是我的登录库中用于身份验证的部分
public function login_account($email,$password)
{
$db = "db";
$data = array("login_mail" => sha1($email));
$query_result = $this->CI->m_eauth->get_login_password($data,$db);
$hash_password ="";
foreach($query_result->result_array() as $value)
{
$hash_password = $value['hash_password'];
$site_name = $value['hash_name'];
$account_type = $value['account_type'];
$site_match_id = $value['site_match_id'];
$site_levels = $value['levels'];
$site_roles = $value['roles'];
}
if(password_verify($password, $hash_password)){
// Success!
$session_data = array(
"site_id"=>$site_match_id,
"site_email"=>$email,
"site_name"=>$site_name,
"site_avatar"=>md5($email).".jpg",
"site_type"=>$account_type,
"site_levels"=>$site_levels,
"site_roles"=>$site_roles
);
$this->CI->session->set_userdata($session_data);
return "successful";
}
else{
// Invalid credentials
return "unsuccessful";
}
}
让我补充一下,登录可以正常运行,单个会话也可以正常运行。但是我描述的问题时不时地发生,并且因为我不知道在哪里看而感到困惑。
答案 0 :(得分:-1)
没有任何真正的办法可以解决这个问题,会话并不是PHP的神奇组成部分,您可以通过它调用session_start()
来完成一天的工作。如果您的应用程序泄漏了会话,则说明您没有正确保护它,因此需要对其进行修复。
会话安全性是一个大问题,因为被劫持的会话基本上可以使攻击者完全访问其他人的帐户。
我建议您阅读官方的PHP session docs,并考虑实施Nginx userid module作为识别用户的附加措施。