【问题标题】:CodeIgniter 3 sessions not working for all of my usersCodeIgniter 3 会话不适用于我的所有用户
【发布时间】:2018-12-02 01:26:24
【问题描述】:

我使用 CI 会话来允许用户登录我的站点并在会话期间使用存储一些数据。这是我的会话的配置(是开箱即用的配置):

$config['sess_driver'] = 'files';
$config['sess_cookie_name'] = 'ci_session';
$config['sess_expiration'] = 0;
$config['sess_save_path'] = NULL;
$config['sess_match_ip'] = FALSE;
$config['sess_time_to_update'] = 300;
$config['sess_regenerate_destroy'] = FALSE;

我遇到的问题是,当我在浏览器(Chromium v​​66.0.3359.117)和其他设备中测试会话时,这工作正常,但有些用户告诉我他们无法登录。我认为这可能是那些用户没有在他们的浏览器中启用 cookie,但我无法检查。

有人知道会话是否有任何问题,这只是因为 cookie 被禁用而导致的问题吗?

【问题讨论】:

  • 在您的代码中添加调试以捕获浏览器发送给您的 cookie 值,并亲自查看用户无法登录的原因
  • 如何调试 HTTP 请求以查看 cookie?收到请求时,我可以访问发布的数据(使用 $this->input->post()),但不能访问整个 HTTP 请求...:/
  • 您是否查看了input 类文档以获取有关 cookie 的信息?
  • 请阅读Under what circumstances may I add “urgent” or other similar phrases to my question, in order to obtain faster answers? - 总结是这不是解决志愿者的理想方式,并且可能会适得其反。请不要将此添加到您的问题中。
  • 您需要能够使用您面前的浏览器来复制它 - 其他任何事情都在猜测。您可以在您的应用程序中添加一个隐藏的复活节彩蛋,以帮助用户非常轻松地转储他们的 cookie,以便他们可以将它们复制到您的电子邮件中(当然,为了安全起见,您应该立即删除这些 cookie)。特别是,您需要确定是否可以将他们获得的 cookie 与您识别为有效会话的 cookie 匹配。

标签: php codeigniter session cookies


【解决方案1】:

当你使用

$config['sess_driver'] = 'files';

那你就不能用了

$config['sess_save_path'] = NULL;

$config['sess_save_path'] 的值必须设置为将用于会话文件的文件夹的绝对路径。有关详细信息,请参阅会话库文档的 Files Driver 部分。

【讨论】:

  • 首先,非常感谢您的回答!我已经在生产中检测到这个问题,所以我真的需要解决它。我不明白的是,为什么即使使用这种配置,我也可以在许多不同的机器和浏览器中正常使用会话(这让我认为服务器中的会话有效),但只有在某些机器上不起作用。请原谅我的无知,但我需要尽快解决这个问题。
  • 所以你给$config['sess_save_path'] 赋值了,还是有问题?
  • 如果用户不允许使用 cookie,那么会话将无法工作。
  • 我无法确认这是否有效,因为很遗憾我需要我的用户尝试,所以我必须等待......在我的设备上测试时没有这个问题。
  • 但是...如果我认为如果这在我曾经测试过的所有机器和浏览器上都可以正常工作,那么问题出在客户端,可以吗?因为我认为如果这对我有用,服务器当前正在存储会话,但在某些情况下,没有收到会话 cookie,不是吗?
猜你喜欢
  • 2017-09-28
  • 2018-01-27
  • 2015-02-01
  • 2014-04-04
  • 2019-02-28
  • 1970-01-01
  • 1970-01-01
  • 2017-10-15
  • 2015-10-05
相关资源
最近更新 更多