Codeigniter -会话不通过控制器和视图工作


Codeigniter - sessions not working through controller and view

我正试图在用户名和密码匹配的时候使用codeigniter会话进行登录,但我无法得到它。我正在这样做:

控制器:

public function __construct()
    {
        parent::__construct();
        $this->load->model('main_select');
        $this->load->helper('url');
        $this->load->library('session');
    }
    ...code when username and password match:
if($pass === $user){
        $this->session->set_userdata(array(
                                    'user_id' => $login['id_user'],
                            ));//we create the session 'user_id'
}

这里假设我们创建了一个名为"user_id"的会话。在视图中它不起作用,我有这个:

if( !$this->session->userdata('id_user') ){
//see this content
//first content
}else{
//see this other
//second content
}

但是我总是看到相同的内容('second content')。

试图销毁它(但不工作):

public function logout()
    {
        //session_unset(); 
        // destroy the session 
        //session_destroy();
        $this->session->unset_userdata('id_user');      
        header("Location: ".base_url() );
    }

我做错了什么?由于

EDIT1:

$password = md5( $this->input->post('inputpassword') ); 
$login =  $this->login_select->get_username($username);
//si no coincide
if( $login['password'] !== $password ) {}

注意:始终使用数据库处理用户登录。(代码涉及数据库登录检查)

在您的数据库中创建表user,并添加这两个字段。

  1. 用户名

添加一些用户登录

然后在你的代码

public function __construct()
    {
        parent::__construct();
        $this->load->model('main_select');
        $this->load->helper('url');
        $this->load->library('session');
    }
// logging
public function loging()
{
    $user = mysql_real_escape_string($_POST['username']);
    $pass = md5(mysql_real_escape_string($_POST['password']));
    $validate = $this->main_select->validate_user($user,$pass);
    if(empty($validate) || $validate>1)
    {
        //Not a valid user
        //redirect to login page
        $this->load->view('loging');
    }
    else
    {
        //valid user
        //set the session
        $array = array('user_id' => '$user');
        $this->session->set_userdata();
        //redirect to normal page
        $this->load->view('home_page');
    }
}
//logout
public function logout()
{
    $result= $this->session->sess_destroy(); 
    if ((isset($result))) 
    {
        header("Location: ".base_url() );
    }    
    else
    {
    }

}
模型中

public function validate_user($user,$pass)
{
    $query = $this->db->query("SELECT * FROM user WHERE username= '$user' AND password='$pass'");
    $result = $query->result_array();
    $count = count($result);
    return $count;
}

修改这一行,那么你的脚本就会像id_user需要设置的那样首先在脚本中使用。

   if($pass === $login['password'] && $user===$login['username']){
              $this->session->set_userdata(array(
                                'id_user' => $login['id_user'],
                        ));//we create the session 'user_id'
  }

这里的$login['password']$login['username']是来自表的数据,需要根据您的用户表更改字段名pass或用户