[英]session / cookie issues codeigniter 1.7.2
嗨,我正在完成一个项目,但我突然遇到了CI问题。 我正在运行版本 1.7.2 ,并且我正在使用 CI session class 来设置和获取 session 数据。
这发生在Firefox 和 IE中。 更奇怪的是该应用程序只能在 Chrome 中正常运行。 我已经证实这也发生在以前没有任何问题的旧版本的应用程序中。
这是我的配置:
Session
$config['sess_cookie_name'] = 'ciprojectname';
$config['sess_expiration'] = 7200;
$config['sess_encrypt_cookie'] = TRUE;
$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'] = 900;
Cookies
$config['cookie_prefix'] = "";
$config['cookie_domain'] = "";
$config['cookie_path'] = "/";
我尝试添加 cookie 域,但问题仍然存在。 我还读到这可能是与服务器时间同步的问题,但我已经在多台服务器上尝试过。 我想首先要看的是为什么 CI 会在一个浏览器而不是其他浏览器中工作。
任何帮助将不胜感激。
更新
我从来没有详细描述过这个问题:
当我尝试访问 /controller/method 时,它会重新加载当前页面并且什么都不做。 有时如果我添加 /controller/method/ <-- 正斜杠,它将呈现下一页。
我的猜测是 Firefox 和 IE 在加载之间重置 session 数据。 在大多数情况下,这是由服务器设置引起的。 我的猜测是它在本地主机上运行良好,现在一旦移动到远程服务器就会出现问题。
首先,找出问题所在。 您必须准确指出问题发生的位置。 一些建议:
检查服务器日志以查看日期是如何设置的。 是 0000 年。如果所有服务器的 PHP 版本相同,那么这可能是您的问题。 这是某些 PHP 版本的已知错误。 https://bugs.php.net/bug.php?id=48276
如果没有,数据库是否获取 session 数据? 如果是,那么您可以在逐页移动时观察数据,以查看 session 是否正在重置。 如果是这样,很可能是服务器设置问题。
如果不是,请检查您的浏览器安全设置。 从 localhost 移动后,可能会出现安全问题。
如果不是,请尝试从默认更改为$config['sess_expiration'] = 43200;
有些人建议在出现会话丢失问题时使用此方法。
如果否,将sess_match_ip更改为 False 并在 Firefox 和 IE 中尝试。 它伴随着浏览器设置问题。
如果问题仍然不清楚,请进行简化测试 - 重新创建问题所需的最少代码。 创建具有“setsession”和“readsession”function 的单个 controller。 尝试在每个浏览器中重新加载页面以查看 session 是否更新。 查看服务器日志和您的数据库。 如果这可行,那么罪魁祸首似乎是在问题浏览器不喜欢的 session 中发送的一些数据。
根本问题很可能是以下一项或多项:
A. session 数据中的无效字符
B. 服务器时间设置
C。 IE 和 Firefox 中的安全设置(如果服务器从 localhost 更改)
D. PHP 中的日期错误问题
如果您仍然遇到问题,可能是时候考虑使用 Native Session 库: http://codeigniter.com/wiki/Native_session/
似乎这个问题非常普遍,以至于有人为 CI 会话定制了 class: http://www.philsbury.co.uk/blog/code-igniter-sessions它可能值得一试。
希望这可以帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.