【问题标题】:My session doesnot work properly我的会话无法正常工作
【发布时间】:2018-08-07 13:28:32
【问题描述】:

我的问题是,以下if 条件总是进入第一个if 条件,永远不会进入elseif 条件。

这是我下面的代码:

if ($this->session->has_userdata('role') == 1) {
    $this->session->set_flashdata('success', 'Welcome ' . $userInfo[0]->name . '!');
    redirect('adashboard');    
} elseif ($this->session->has_userdata('role') == 2) {
    $this->session->set_flashdata('success', 'Welcome ' . $userInfo[0]->name . '!');
    redirect('udashboard');
}

你能告诉我为什么吗?

【问题讨论】:

标签: php codeigniter session codeigniter-3 codeigniter-session


【解决方案1】:

希望对您有所帮助:

使用userdata代替has_userdatauserdata返回指定项键的值

if ($this->session->userdata('role') == 1) 
{
    $this->session->set_flashdata('success', 'Welcome ' . $userInfo[0]->name . '!');
    redirect('adashboard');    
} 
elseif ($this->session->userdata('role') == 2) 
{
    $this->session->set_flashdata('success', 'Welcome ' . $userInfo[0]->name . '!');
    redirect('udashboard');
}

更多:https://www.codeigniter.com/user_guide/libraries/sessions.html

【讨论】:

  • 我在发布这个问题后就这样做了。
【解决方案2】:

希望对您有所帮助

has_userdata() 检查给定的会话索引是否设置并返回布尔值。

$this->session->has_userdata('role') ; 

此代码检查是否设置了角色。因此,在您的情况下,它返回的 true 等价于 1。

在您的情况下,您需要使用userdata() 而不是has_userdata()

$role=$this->session->userdata('role');
if ($role == 1) {
    $this->session->set_flashdata('success', 'Welcome ' . $userInfo[0]->name . '!');
    redirect('adashboard');    
} elseif ($role == 2) {
    $this->session->set_flashdata('success', 'Welcome ' . $userInfo[0]->name . '!');
    redirect('udashboard');
}

【讨论】:

    猜你喜欢
    • 2015-05-10
    • 2018-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多