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