【问题标题】:Codeigniter 3.0.0: Session gone after redirecting to other pageCodeigniter 3.0.0:重定向到其他页面后会话消失
【发布时间】:2017-06-01 06:45:44
【问题描述】:

我有一些问题,我的代码工作正常,但会话没有。 这里是代码:

public function index()
{
    if (isset($_POST['btnSubmit'])) {
        $this->lm->username = $_POST['username'];
        $this->lm->password = $_POST['password'];
        $sql = sprintf("SELECT hakAkses, nip FROM user WHERE username = '%s' AND password = '%s'",
              $this->lm->username,
              $this->lm->password
              );
        $query = $this->db->query($sql);
        $row = $query->row();
        $sessData = array('nip' => $row->nip,
                          'hakAkses' => $row->hakAkses);
        $this->session->set_userdata($sessData);
        print_r($this->session->all_userdata());

        if ($this->session->userdata('hakAkses') == 'ADMIN') {
            redirect('Admin/index','refresh');
        } else if ($this->session->userdata('hakAkses') == 'PENGAJAR'){         
            redirect('Pengajar/index','refresh');
        } else {
            redirect('Login','refresh');
        }
    } else {
        $this->load->view('Login/LoginView');
    }

}

当我在设置 session$this->session->set_userdata($sessData); 后执行此操作时,一切顺利。但是当我再次尝试以其他形式打印时,会话已经消失。

我的会话配置:

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

好的原因是每次我重定向页面时会话都会生成新会话。 如何处理?

【问题讨论】:

  • 您如何设置会话?你能发布你的代码吗?
  • 您是否在 config.php 上设置了会话保存路径,不要离开为 NULL

标签: php codeigniter session


【解决方案1】:

从您的代码中不清楚为什么。但可能你忘了从其他页面加载会话。所以尝试从 autoload.php 自动加载会话库。或者在控制器中使用$this->load->library('session');

【讨论】:

  • 我已经在我的 config.php 中自动加载会话 $autoload['libraries'] = array('database', 'session');
  • 其他页面中会话变量的vardump输出是什么?
  • 它给出了这个数组(1) { ["__ci_last_regenerate"]=> int(1496306605) }
  • 因为您在 config 中使用驱动程序数据库。您必须创建会话表。如果不存在则创建表 ci_sessions (id varchar(40) NOT NULL, ip_address varchar(45) NOT NULL, timestamp int(10) unsigned DEFAULT 0 NOT NULL, data blob NOT NULL, KEY ci_sessions_timestamp (timestamp) );
猜你喜欢
  • 2020-12-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-22
  • 2017-09-11
  • 2018-05-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多