带有ajax输入的codeigniter会话无法正常工作

时间:2018-01-16 14:38:56

标签: ajax codeigniter session

查看

        <input type="text" class="form-control" placeholder="Username" name="username" id="username">

        <input type="password" class="form-control" placeholder="Password" name="password" id="password">

          <button type="button" class="btn btn-primary btn-block btn-flat"  id="login">Sign In</button>

这里我使用ajax

将值传递给控制器
<script>
  $(function()
  {
    $('#login').click(function()
    {
      var username=$("#username").val();
      var password=$("#password").val();
      $.ajax({
      url:"<?php echo base_url();?>home/check_login",
      type:"POST",
      async:false,
      data:{username:username,password:password},
      success:function(data)
       {
        var obj = JSON.parse(data);
        var count = Object.keys(obj).length;
        console.log(obj);
        console.log(count);
           if(obj.length==1)
           {
          window.location.href = "<?php echo base_url();?>home/show_dashboard";
           }
           else if(obj.length==0)
           {    
             $('#modal_warning').modal('show');
           } 
        }
     });
   });
});
</script>

,我的控制器

public function check_login()
    {
        $username= $this->input->post('username');
        $password= $this->input->post('password');

        $newdata = array(
               'username'  => $username,


           );


        $this->session->set_userdata('ci_session',$newdata);

        $details=$this->user_model->check_username($username,$password);
        echo json_encode($details);
    }

点击退出按钮

public function log_out()
    {   
        if($this->session->unset_userdata('ci_session'))
        {
        $this->load->view('login');
        }
        else
        {
            echo "nooo";
            exit;
        }
    }

当我点击退出按钮时,它给了我“noo”,我把它放在了其他部分。 当我尝试打印会话数据时,它什么都不打印。如何设置会话通过ajax传递哪些数据。

我还加载了会话库

1 个答案:

答案 0 :(得分:0)

你正在进行$this->set_userdata('ci_session',$newdata);没有会话。这样做是为了设置会话变量。 $this->session->set_userdata('ci_session',$newdata);

还要确保加载了会话驱动程序。要访问会话变量,您可以执行print_r($this->session->ci_session)

此外:

取消设置用户数据实际上不会返回任何内容:

/**
 * Unset userdata
 *
 * Legacy CI_Session compatibility method
 *
 * @param   mixed   $key    Session data key(s)
 * @return  void
 */
public function unset_userdata($key)
{
    if (is_array($key))
    {
        foreach ($key as $k)
        {
            unset($_SESSION[$k]);
        }

        return;
    }

    unset($_SESSION[$key]);
}

因此它总是评估为假。函数本身只是unset($_SESSION[$key])的别名,您可以在会话核心文件中查看该函数。没有条件陈述;只需$this->session->unset_userdata('ci_session'); redirect(...);即可。