如何使 Codeigniter 会话与边缘一起工作?

Posted

技术标签:

【中文标题】如何使 Codeigniter 会话与边缘一起工作?【英文标题】:How can I make Codeigniter session work with edge? 【发布时间】:2017-06-15 04:41:46 【问题描述】:

我在 edge 中检查了会话 cookie,但它不可用。在 chrome 中,会话 cookie 工作正常。我在设置会话时尝试了 php superglobal $_SESSION[] 和魔术 getter $this->session->set_userdata($newdata);

这里是会话配置值:

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

以下是 cookie 配置值:

$config['cookie_prefix'] = 'ncitce';
$config['cookie_domain'] = 'localhost';
$config['cookie_path'] = '/';
$config['cookie_secure'] = FALSE;
$config['cookie_httponly'] = TRUE;

【问题讨论】:

尝试使用虚拟主机进行项目。 并在设置echo $this->session->userdata('user_id')之后获取codeigniter会话 对虚拟主机一无所知。尝试让 vhost 运行但没有用。稍后再看。我有点急。不管怎样,谢谢。我想我从你提到的 vhost 中想出了一些东西。 vHost 是您可以在 xampp wamp 等上使用虚拟域的地方 ***.com/questions/27268205/… youtube.com/results?search_query=virtual+host+xampp 【参考方案1】:

实际上,我所有的 CodeIgniter 3 项目都可以在 Edge 中正常运行。请在 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'] = TRUE;
$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;

记得在你的数据库中创建 ci_session 表。

    CREATE TABLE IF NOT EXISTS `ci_sessions` (
        `id` varchar(128) 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`)
);

如果上述方法失败,请在下方评论。

【讨论】:

是的,如果失败了。但是,我创建了虚拟主机,一切正常。看起来边缘不想为 localhost 创建 cookie。【参考方案2】:

如果你使用的是低版本的codeigniter,你可以将CI的Session类替换成这个类,它在服务器上存储会话数据:

https://github.com/bcit-ci/CodeIgniter/wiki/Dariusz-Debowczyk%27s-Session-Class

另请参阅此链接进行讨论: https://expressionengine.com/forums/archive/topic/135722/codeigniter-session-problems-thread

【讨论】:

以上是关于如何使 Codeigniter 会话与边缘一起工作?的主要内容,如果未能解决你的问题,请参考以下文章

如何修复CodeIgniter-3中没有工作的会话

如何使passportjs google login oauth与JWT一起使用,而不是通过序列化/反序列化方法创建会话?

在这个例子中,让 jQuery/Ajax 与 CodeIgniter 一起工作的最佳方法是啥?

Flask-SQLAlchemy - 会话如何与多个数据库一起工作?

关闭浏览器时如何删除用于注销的 codeigniter 会话?

Codeigniter 中的会话变量不工作