嗨,我正在完成一个项目,我突然遇到 CI 的问题。我正在运行版本1.7.2 ,我正在使用CI会话类来设置和获取会话数据。
这发生在 Firefox和IE 中。更奇怪的是应用程序仅在Chrome中正常运行。我已经验证了这种情况发生在应用程序的旧版本中,以前没有任何问题。
这是我的配置:
会话
$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;
缓存
$config['cookie_prefix'] = "";
$config['cookie_domain'] = "";
$config['cookie_path'] = "/";
我玩添加cookie域但问题仍然存在。我还读到它可能是服务器时间同步问题的时间,但我已在多台服务器上尝试过。我想首先要看的是CI为什么CI可以在一个浏览器中工作而不是其他浏览器。
非常感谢任何帮助。
更新
我从未详细描述过这个问题:
当我尝试访问/ controller /方法时,它将重新加载当前页面并且什么都不做。有时如果我添加/ controller / method /< - 正斜杠,它将呈现下一页。
答案 0 :(得分:1)
我的猜测是Firefox和IE正在重置加载之间的会话数据。在大多数情况下,这是由服务器设置引起的。我的猜测是它在localhost上工作正常,并且一旦移动到远程服务器就会出现问题。
首先,找到问题所在。您必须准确找出问题发生的位置。一些建议:
检查服务器日志以查看日期的设置方式。是0000年。如果所有服务器都具有相同版本的PHP,那么这可能是您的问题。这是一些PHP版本的已知错误。 https://bugs.php.net/bug.php?id=48276
如果不是,数据库是否获取会话数据?如果是,那么您可以在从一个页面移动到另一个页面时查看数据,以查看是否正在重置会话。如果是这样,很可能是服务器设置问题。
如果不是,请检查您的浏览器安全设置。从localhost移出后,可能存在安全问题。
如果不是,请尝试从默认设置更改为$config[‘sess_expiration’] = 43200;
有人建议在丢弃会话时出现问题。
如果不是,请将 sess_match_ip 更改为False,然后在Firefox和IE中尝试。它伴随着浏览器设置问题。
如果问题仍然不明确,请进行减少测试 - 重新创建问题所需的最少代码。使用“setsession”和“readsession”功能创建单个控制器。尝试在每个浏览器中重新加载页面以查看会话是否更新。查看服务器日志和数据库。如果这样做,那么罪魁祸首似乎是在会话中发送的问题浏览器不喜欢的一些数据。
潜在问题很可能是以下一项或多项:
一个。会话数据中的无效字符
B中。服务器时间设置
℃。 IE和Firefox中的安全设置(如果服务器从localhost更改)
d。 PHP中的日期错误问题
如果您仍然遇到问题,可能需要考虑使用原生会话库:http://codeigniter.com/wiki/Native_session/
似乎这个问题非常普遍,有人为CI会话制作了自定义课程:http://www.philsbury.co.uk/blog/code-igniter-sessions这可能值得一试。
希望这有帮助。