【问题标题】:Session destroyed after redirect in codeigniter 3在codeigniter 3中重定向后会话被破坏
【发布时间】:2019-04-17 19:56:56
【问题描述】:

我面临的问题是当我重定向到某个页面时,我的会话被破坏了。我只在实时服务器中面临这个问题,并且在 localhost 中完美地工作。几个月前不同的托管公司没有这个问题

这是我的会话配置

$config['sess_driver'] = 'files';
$config['sess_cookie_name'] = 'ci_session';
$config['sess_expiration'] = 7200;
$config['sess_save_path'] = NULL;
$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;

【问题讨论】:

  • 请比较CI和php版本的localhost和production
  • 硬编码sess_save_path 路径是个好主意。还要确保对目录使用 chmod 700,请参阅codeigniter.com/user_guide/libraries/sessions.html的“文件驱动程序”下@
  • 你能告诉我要硬编码什么吗?
  • 您阅读了链接吗?您应该添加一个绝对路径到您想要的会话目录,它应该是一个非公共目录。根据您的环境,建议为/application/sessions 或相等。然后chmod它。您的会话未存储在新服务器上的最可能原因是 CI 无法保存/读取会话文件。另一个建议是使用数据库或 memcached,如果有的话,它会更快。
  • 某些操作系统与 $config['sess_save_path'] = NULL 像 centOS 一样工作正常,而其他服务器需要路径来存储会话。提供会话路径然后检查

标签: php codeigniter


【解决方案1】:

您正在使用“文件”驱动程序,因此您必须提供$config['sess_save_path'] 的路径。您将值设置为 NULL 将不起作用。

分配给$config['sess_save_path'] 的值必须是完整的绝对路径,并且必须具有适当的所有者和权限设置。 files driver 上的文档。

出于安全原因,许多开发人员会在与网站公用文件夹相同的级别上创建一个文件夹。如果该文件夹名为“会话”,那么您可以像这样设置配置

$config['sess_save_path'] = dirname(FCPATH .'/sessions/'); 

要尝试的另一件事是明确使用 cookie_domain,即。

$config['cookie_domain']    = '.yourdomain.tld';

一定要包括前导点。

【讨论】:

  • 试过了,但之后没有任何反应,我尝试使用数据库,条目在那里,但会话仍然被破坏
  • 添加了其他尝试。
猜你喜欢
  • 2012-08-20
  • 2019-02-23
  • 2013-10-31
  • 2017-09-11
  • 1970-01-01
  • 1970-01-01
  • 2012-10-31
  • 2016-11-15
  • 2012-12-15
相关资源
最近更新 更多