【问题标题】:Codeigniter creating new session on every page loadCodeigniter 在每次页面加载时创建新会话
【发布时间】:2018-03-02 00:51:47
【问题描述】:

我使用 codeigniter 2.1.0 为客户开发电子商务网站。 该站点已经运行了大约 3 个月,然后突然之间,登录没有保持不变,会话数据没有设置。 我检查了数据库,发现每次页面加载都会创建一个新会话。

这是我的配置值

$config['sess_cookie_name']     = 'myu';
$config['sess_expiration']      = 7200;
$config['sess_expire_on_close'] = FALSE;
$config['sess_encrypt_cookie']  = FALSE;
$config['sess_use_database']    = TRUE;
$config['sess_table_name']      = '_sessions';
$config['sess_match_ip']        = TRUE;
$config['sess_match_useragent'] = TRUE;
$config['sess_time_to_update']  = 3600;

$config['cookie_prefix']    = "";
$config['cookie_domain']    = "";
$config['cookie_path']      = "/";
$config['cookie_secure']    = FALSE;

我编辑了会话表上的 user_agent 字段以适应较长的 user_agent 字符串。 可能是什么问题呢?我会很感激任何帮助

【问题讨论】:

  • 如果@goldenparrot 发布的链接对您有帮助,请告诉我们
  • @Tom - 如果你想根据上面链接的内容写一个答案,请这样做。但是,请自行确定答案,而不要求我们必须访问该站点才能看到解决方案。

标签: php codeigniter


【解决方案1】:

确保您在/application/config/config.php$config['cookie_domain'] 中设置了正确的域

【讨论】:

    【解决方案2】:

    您还应该检查会话表中“user_agent”的大小。我在使用“varchar(40)”时遇到了一些问题,因为 MacOS(山狮,版本 20.0)中的 Firefox 用户代理在您的 UA 中报告了 60 多个字符。

    将字段从“varchar(40)”更改为“varchar(255)”解决了我的问题。

    【讨论】:

    • 这也是我的问题 - 我很困惑为什么默认的 ci_session 表有这个非常愚蠢的设置。
    【解决方案3】:

    我发布这个是希望它可以帮助其他人。我已经尝试了多个站点提到的许多建议,并为此工作了 2 天。没有一个解决方案奏效。

    然后我决定检查我的 cookie 中显示的内容。我在 config.php 文件中设置了$config['sess_encrypt_cookie'] = FALSE;,这样我就可以读取数据并删除我所有的旧 cookie。我还将$config['sess_cookie_name'] 更改为网站名称。它最初是默认的“cisession”。突然之间,它开始正常工作。我不知道是清除了我的旧 cookie 还是关闭了加密或更改了名称造成了不同,但我很高兴它终于起作用了。我猜也许我的 cookie 已损坏。由于我看到网站对相同的设置提出了完全不同的建议(例如,有人说将 ['cookie_domain'] 留空,有人说在您的根域中添加(至少有 2 个句点)等),我将我的设置包括在内在 config.php 文件中:

    $config['sess_cookie_name']     = 'easyeverydayenglish';
    $config['sess_expiration']      = 14400;
    $config['sess_expire_on_close'] = FALSE;
    $config['sess_encrypt_cookie']  = FALSE;
    $config['sess_use_database']    = TRUE;
    $config['sess_table_name']      = 'ci_sessions';
    $config['sess_match_ip']        = TRUE;
    $config['sess_match_useragent'] = TRUE;
    $config['sess_time_to_update']  = 300;
    
    $config['cookie_prefix']    = "";
    $config['cookie_domain']    = ".eee.loc";
    $config['cookie_path']      = "/";
    $config['cookie_secure']    = FALSE;
    

    现在我的下一个问题是尝试让 CI 在 goDaddy 上工作。啊。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-01-15
      • 2019-11-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-23
      • 2019-11-07
      • 1970-01-01
      相关资源
      最近更新 更多