在使用CodeIgniter中的身份验证时,$ this-> session-> userdata和$ this-> session-> has_userdata是否相同?

时间:2017-06-07 11:36:50

标签: php codeigniter codeigniter-3

我使用以下代码在CodeIgniter中进行身份验证。

if(empty($this->session->userdata('user_id'))){
        redirect(base_url());
}

再次阅读文档后,我发现Codeigniter还有另外一个功能。

if(!($this->session->has_userdata('user_id'))){
            redirect(base_url());
}

如果两个代码相同或我的代码存在安全问题?

1 个答案:

答案 0 :(得分:1)

两者都是不同的功能&他们都有自己的用法。

  

第二种是更好的选择,因为它会检查user_data是否有user_id密钥&因此在较少的代码上运行(但它是遗留函数,你应该使用isset($_SESSION[$key])而不是它。)

第一个: -

if(empty($this->session->userdata('user_id'))){
    redirect(base_url());
}

它访问user_id数组中userdata数组中session键的值。

第二个: -

if(!($this->session->has_userdata('user_id'))){
        redirect(base_url());
}

检查user_id密钥是否存在。

注意:

  

has_userdata($key)是一种遗留方法,仅用于向后兼容旧版应用程序。它只是isset($_SESSION[$key])的别名 - 请改用它。

     

如果指定的密钥存在,则返回TRUE,否则返回FALSE