如何修复使用Codeigniter和数据库作为会话驱动程序重新加载/刷新页面时自动生成的会话?

如何修复使用Codeigniter和数据库作为会话驱动程序重新加载/刷新页面时自动生成的会话?,codeigniter,session,Codeigniter,Session,我的小项目在本地计算机上运行得很好。但是,当我将其运行到笔记本电脑中时,每次重新加载或刷新页面时,都会自动在ci_会话表中加载一个条目。我正在使用数据库作为会话驱动程序 根据屏幕截图:第4行显示我的登录会话存储成功。但是,正在添加的两个额外行(5、6)会导致此代码失败: public function isLoggedIn() { if($this->session->userdata('logged_in') === true) { redirect('

我的小项目在本地计算机上运行得很好。但是,当我将其运行到笔记本电脑中时,每次重新加载或刷新页面时,都会自动在ci_会话表中加载一个条目。我正在使用数据库作为会话驱动程序

根据屏幕截图:第4行显示我的登录会话存储成功。但是,正在添加的两个额外行(5、6)会导致此代码失败:

public function isLoggedIn()
{

    if($this->session->userdata('logged_in') === true) {
        redirect('home', 'refresh');
    }
}

public function isNotLoggedIn()
{
    if($this->session->userdata('logged_in') !== true) {
        redirect('login', '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'] = 300;
$config['sess_regenerate_destroy'] = FALSE;

$config['cookie_prefix']    = '';
$config['cookie_domain']    = '';
$config['cookie_path']      = '/';
$config['cookie_secure']    = FALSE;
$config['cookie_httponly']  = FALSE;
这是我的页面控制器

<?php 

class Pages extends MY_Controller
{
    public function view($page = 'login')
    {
        if (!file_exists(APPPATH.'views/'.$page.'.php'))
        {
            // Whoops, we don't have a page for that!
            show_404();
        }

        $data['title'] = ucfirst($page); // Capitalize the first letter

        if($page == 'login') {
            $this->isLoggedIn();
            $this->load->view($page, $data);
        } 
        else{
            $this->isNotLoggedIn();

            $this->load->view($page, $data);
        }
    }

}

注意:这同样适用于另一个具有类似设置的单元。

我在使用原始CI会话库(包括您提到的)时遇到了很多问题。最后,我找到了这个使用
原生PHP会话的替代品。它起作用了!
相信我,在一个项目的中间,我不停地想知道为什么。只是工作而已

这是:

但是,由于这是一个古老的图书馆,你必须做一些修改。你可以在图书馆的论坛上查看这些简单的黑客行为


只需将此文件放到codeigniter的库目录中

在尝试了一些解决方法之后,Codeigniter 3还不能与PHP7兼容。我必须将我的php版本降级到5.6才能正常工作。感谢大家的帮助。

本地主机上的php版本与生产版相比是什么?工作单元php版本5.6,而不是工作单元:7.3 php版本@Vickeland您正在使用的CI版本?有不兼容的报告:请看:我在两个单元中都使用了3.1.10。我将尝试降级第二单元的php版本。我会在它工作后更新它。谢谢@Vickel
<?php 

class MY_Controller extends CI_Controller 
{
    public function __construct()
    {
        parent::__construct();
        $this->load->library('session');
    }

    public function isLoggedIn()
    {

        if($this->session->userdata('logged_in') === true) {
            redirect('home', 'refresh');
        }
    }   

    public function isNotLoggedIn()
    {
        if($this->session->userdata('logged_in') !== true) {
           redirect('login', 'refresh');
        }
    }

}
$autoload['libraries'] = array('database', 'session');