【问题标题】:Codeigniter 2.2 failed create sessionCodeigniter 2.2 创建会话失败
【发布时间】:2014-12-29 11:42:14
【问题描述】:

我使用 CI 2.2 构建了一个简单的登录系统。但是当我尝试生成会话时遇到问题。当然,我已经正确设置了库(数据库、会话)和 User_M。当我从数据库中检索数据(没有会话)时,一切正常。这是我的控制器代码:

public function verify()
{
    // Define variable
    $user = $this->input->post('username');
    $pass = $this->input->post('password');

    // Check input data
    if (!empty($user) AND !empty($pass))
    {
        // Check match data from db
        $checks = $this->User_M->check_user($user, $pass);

        if($checks->num_rows() == 1)
        {
            foreach ($checks->result() as $check)
            {
                $sess = array (
                    'username' => $check->username,
                    'logged_in' => TRUE
                );

                $rest = $this->session->set_userdata($sess);

                if ($rest)
                {
                    echo "working";
                } else {
                    echo "not working";
                }
            }
        } else {
            echo "Not found";
        }
    } else {
        echo "You've empty field";
    }
}

另外解释一下,我用if ($rest)...bla..bla..bla 检查结果,这是回显不工作。请让我知道我的错误在哪里?

提前致谢

【问题讨论】:

  • 你之前加载过SESSION库吗..?
  • 当然我已经正确设置了,你可以在我的解释中看到
  • 我没有。我之前在构建应用程序时使用过 CI 2.1.4,无需加载 session_start() 即可正常工作,我只使用 CI 内置库

标签: php codeigniter session codeigniter-2


【解决方案1】:

我认为问题出在这句话上

$rest = $this->session->set_userdata($sess);

set_userdata() 不返回任何内容,因此根据您的情况,它将始终执行 else 部分。

试着像这样改变你的状况

if (!empty($this->session->userdata("username"))){
   echo "Working";
}else{
   echo "Not Working";
}

【讨论】:

  • 我用if (!empty($this->session->set_userdata('username')))代替if (!empty($this->session->set_userdata[username])),但还是不行
  • 我的错误,它的$this->session->userdata("username"),我编辑了答案。
  • 是的,非常感谢。我在if (!empty ($rest)) 这样的语句中做了一点修改,我定义了变量$rest = $this->session->userdata('username'),现在它工作正常:-)
猜你喜欢
  • 2021-05-23
  • 2017-10-05
  • 1970-01-01
  • 1970-01-01
  • 2011-12-11
  • 1970-01-01
  • 2016-04-01
  • 2016-11-13
  • 1970-01-01
相关资源
最近更新 更多