PHP会话数据返回错误值

时间:2018-08-29 14:42:11

标签: php codeigniter session caching server

我有一个使用代码点火器框架在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";
        }
    }

让我补充一下,登录可以正常运行,单个会话也可以正常运行。但是我描述的问题时不时地发生,并且因为我不知道在哪里看而感到困惑。

1 个答案:

答案 0 :(得分:-1)

没有任何真正的办法可以解决这个问题,会话并不是PHP的神奇组成部分,您可以通过它调用session_start()来完成一天的工作。如果您的应用程序泄漏了会话,则说明您没有正确保护它,因此需要对其进行修复。

会话安全性是一个大问题,因为被劫持的会话基本上可以使攻击者完全访问其他人的帐户。

我建议您阅读官方的PHP session docs,并考虑实施Nginx userid module作为识别用户的附加措施。