我第一次遇到会话破坏的新问题。在今天之前,我会点击注销:
function logout()
{
$this->session->unset_userdata("logged_in");
$this->session->sess_destroy();
redirect(base_url(), 'refresh');
}
这个会议很容易被破坏,但今天却没有用。这是我开始会话的代码。
function checkDataBase()
{
$this->load->library('session');
$email = $this->input->post('email');
$password = $this->input->post('password');
$result = $this->login_model->contractor_login($email, $password);
// die;
// echo "<pre>";print_r($result);die;
if ($result) {
if (isset($_POST['remember'])) {
$this->input->set_cookie('email', $_POST['email'], 3600);
$this->input->set_cookie('password', $_POST['password'], 3600);
}
foreach ($result as $row);
$role_id = 2;
$session_data = array(
'id' => $row->id,
'name' => $row->name,
'country_id' =>$row->country_id,
'category_id' =>$row->category_id,
'company_name' =>$row->company_name,
'email' =>$row->email,
'address1' =>$row->address1,
'counties' =>$row->counties,
'phone_number' =>$row->phone_number,
//'business_status' =>$business_status,
'role_id' => $role_id
);
$this->session->set_userdata('logged_in', $session_data);
return TRUE;
} else {
$this->session->set_flashdata('message', 'Wrong Username or Password');
redirect("contractor/login");
}
}
答案 0 :(得分:0)
从Codeigniter会话类文档中,关于Flashdata,我们可以阅读:
CodeIgniter支持&#34; flashdata&#34;或会话数据,这些数据仅可用于下一个服务器请求,然后自动清除。 您的问题可能是,当您重定向时,该过程需要多个请求,清除您的flashdata。
要查看是否属于这种情况,只需将以下代码添加到要重定向到的控制器的构造函数中:
$this->session->keep_flashdata('message');
这将使flashdata保留另一个服务器请求,允许以后使用它。
答案 1 :(得分:0)
我得到了会话破坏的解决方案。实际上问题是我的浏览器创建了缓存,这就是我认为会话没有被破坏的原因。当我研究的时候,我得到了解决问题的方法。
这是我找到解决方案的链接。
http://www.robertmullaney.com/2011/08/13/disable-browser-cache-easily-with-codeigniter/我
我在“application / libraries”
中创建了一个新文件使用此代码
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class MY_Output extends CI_Output {
function nocache()
{
$this->set_header('Expires: Sat, 26 Jul 1997 05:00:00 GMT');
$this->set_header('Cache-Control: no-cache, no-store, must-revalidate, max-age=0');
$this->set_header('Cache-Control: post-check=0, pre-check=0', FALSE);
$this->set_header('Pragma: no-cache');
}
}
/* End of File */
然后我调用了nocache();函数进入控制器的构造函数
$这 - &GT;输出 - &GT;非缓存();
问题已经解决了。