CI会话在重定向后销毁

时间:2018-06-27 06:37:04

标签: php codeigniter codeigniter-2 codeigniter-3

首先,我想告诉您,我进行了很多搜索,但找不到解决方案。无论如何,第一件事首先是我是CI的新手,并且我尝试使用CI会话创建以CI构建的登录页面。 我的登录控制器功能如下所示

//Validating login from ajax request
function validate_login() {
  $email = $this->input->post('email');
  $password = $this->input->post('password');
  $credential = array('email' => $email, 'password' => sha1($password));
  // Checking login credential for admin
  $query = $this->db->get_where('admin', $credential);
  if ($query->num_rows() > 0) {
      $row = $query->row();
      $_SESSION['admin_login'] =  '1';  // I am using traditional PHP Session Global Variable for Setting Session Variable
      $_SESSION['admin_id'] = $row->admin_id;
      $_SESSION['login_user_id'] = $row->admin_id;
      $_SESSION['name'] =  $row->name;
      $_SESSION['login_type'] = 'admin';
      //echo $this->session->userdata('admin_login');exit; //This is printing the data fine
      redirect(base_url() . 'index.php?admin/dashboard');
  }

现在,它被重定向到Admin Controller仪表板功能

 /***ADMIN DASHBOARD***/
function dashboard()
{
    echo "<pre>";
    print_r($_SESSION); exit;
    if ($this->session->userdata('admin_login') != 1)
        redirect(base_url(), 'refresh');
    $page_data['page_name']  = 'dashboard';
    $page_data['page_title'] = get_phrase('admin_dashboard');
    $this->load->view('backend/index', $page_data);
}

输出

Array
(
 [__ci_last_regenerate] => 1530080373
 )

我的Autoload.php

$autoload['libraries'] = array('pagination', 'xmlrpc' , 'form_validation', 'email','upload','paypal','session','database');

我也试图在Admin的构造函数上加载会话库

function __construct()
{
    parent::__construct();
    $this->load->database();
    $this->load->model('Barcode_model');
    $this->load->model('session');

   /*cache control*/
    $this->output->set_header('Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0');
    $this->output->set_header('Pragma: no-cache');
}

但是似乎没有任何作用,因为我无法登录并重定向到

if ($this->session->userdata('admin_login') != 1)
    redirect(base_url(), 'refresh');

Config.php

$config['sess_driver'] = 'database';
$config['sess_cookie_name'] = 'ci_session';
$config['sess_expiration'] = 7200;
$config['sess_save_path'] = 'ci_sessions';
$config['sess_match_ip'] = FALSE;
$config['sess_time_to_update'] = 7200;
$config['sess_regenerate_destroy'] = TRUE;

/*
|--------------------------------------------------------------------------
| Cookie Related Variables
|--------------------------------------------------------------------------
|
| 'cookie_prefix'   = Set a cookie name prefix if you need to avoid collisions
| 'cookie_domain'   = Set to .your-domain.com for site-wide cookies
| 'cookie_path'     = Typically will be a forward slash
| 'cookie_secure'   = Cookie will only be set if a secure HTTPS connection exists.
| 'cookie_httponly' = Cookie will only be accessible via HTTP(S) (no javascript)
|
| Note: These settings (with the exception of 'cookie_prefix' and
|       'cookie_httponly') will also affect sessions.
|
*/
$config['cookie_prefix']    = '';
$config['cookie_domain']    = 'localhost';
$config['cookie_path']      = '/';
$config['cookie_secure']    = FALSE;
$config['cookie_httponly']  = FALSE;

/*

我要设置的部分缺少任何内容吗?帮助表示赞赏。

1 个答案:

答案 0 :(得分:0)

在php 7.1 +上的3.0.1版本上的会话存在问题

您只需要从

打开session.php文件

system> libraries> Session> Session.php

找到代码ini_set('session.name', $params['cookie_name']);

并用此ini_set('session.id', $params['cookie_name']);

替换

希望它将对您有帮助。