我是php编码器会话的新来者。我有一个关于会话到期在我的网站的问题。我使用ajax coll在我们的网站页面上加载广告div,还添加到购物车功能,以在同一页面上添加多个产品。但我的购物车添加的产品是空的,由于会话过期后批准。4 - 5分钟。关于这个问题我做了很多研究。我认为我的网站会话过期,由于collcolling ajax和更新会话id在同一时间。但我不确定。
我已经将config.php文件配置为-
$config['sess_cookie_name'] = 'ci_session';
$config['sess_expiration'] = 0;
$config['sess_encrypt_cookie']= FALSE;
$config['sess_use_database']= TRUE;
$config['sess_table_name'] = 'ci_sessions';
$config['sess_match_ip'] = FALSE;
$config['sess_match_useragent']= TRUE;
$config['sess_time_to_update'] = 300;
我已经创建了表(ci_sessions)。
请给我一个解决这个问题的方法
谢谢。
去年CI中有一个session.php补丁解决了ajax+session过期问题,请查看下面的补丁链接这里
确保有两个选择。
1。将system'libraries'Session.php
替换为这个
2。扩展原来的session.php,如@undefined answer.
如果没有。1 then don do no。2,反之亦然
我只知道这些。祝你好运!
这是一个CI错误,当Ajax请求发送时会话被销毁,您可以扩展CI_Session类并仅在请求不是Ajax时调用sess_update
。
class MY_Session extends CI_Session
{
function sess_update()
{
// Listen to HTTP_X_REQUESTED_WITH
if (isset($_SERVER['HTTP_X_REQUESTED_WITH']) && $_SERVER['HTTP_X_REQUESTED_WITH'] !== 'XMLHttpRequest') {
parent::sess_update();
}
}
}
为了加载MY_Session
类,你可以在你的config
文件中添加这个函数:
function __autoload($classname) {
if (strpos($classname, 'CI_') !== 0) {
$file = APPPATH . 'libraries/' . $classname . '.php';
if (file_exists($file) && is_file($file)) {
@include_once($file);
}
}
}