查看
<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传递哪些数据。
我还加载了会话库
答案 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(...);
即可。