session / cookie发出codeigniter 1.7.2

时间:2011-07-21 13:00:47

标签: php mysql session codeigniter cookies

嗨,我正在完成一个项目,我突然遇到 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 /< - 正斜杠,它将呈现下一页。

1 个答案:

答案 0 :(得分:1)

我的猜测是Firefox和IE正在重置加载之间的会话数据。在大多数情况下,这是由服务器设置引起的。我的猜测是它在localhost上工作正常,并且一旦移动到远程服务器就会出现问题。

首先,找到问题所在。您必须准确找出问题发生的位置。一些建议:

  1. 检查服务器日志以查看日期的设置方式。是0000年。如果所有服务器都具有相同版本的PHP,那么这可能是您的问题。这是一些PHP版本的已知错误。 https://bugs.php.net/bug.php?id=48276

  2. 如果不是,数据库是否获取会话数据?如果是,那么您可以在从一个页面移动到另一个页面时查看数据,以查看是否正在重置会话。如果是这样,很可能是服务器设置问题。

  3. 如果不是,请检查您的浏览器安全设置。从localhost移出后,可能存在安全问题。

  4. 如果不是,请尝试从默认设置更改为$config[‘sess_expiration’] = 43200;有人建议在丢弃会话时出现问题。

  5. 如果不是,请将 sess_match_ip 更改为False,然后在Firefox和IE中尝试。它伴随着浏览器设置问题。

  6. 如果问题仍然不明确,请进行减少测试 - 重新创建问题所需的最少代码。使用“setsession”和“readsession”功能创建单个控制器。尝试在每个浏览器中重新加载页面以查看会话是否更新。查看服务器日志和数据库。如果这样做,那么罪魁祸首似乎是在会话中发送的问题浏览器不喜欢的一些数据。

  7. 潜在问题很可能是以下一项或多项:

    一个。会话数据中的无效字符

    B中。服务器时间设置

    ℃。 IE和Firefox中的安全设置(如果服务器从localhost更改)

    d。 PHP中的日期错误问题

    如果您仍然遇到问题,可能需要考虑使用原生会话库:http://codeigniter.com/wiki/Native_session/

    似乎这个问题非常普遍,有人为CI会话制作了自定义课程:http://www.philsbury.co.uk/blog/code-igniter-sessions这可能值得一试。

    希望这有帮助。