codeigniter会话在它不应该死的时候死掉

时间:2011-12-31 09:04:46

标签: .htaccess codeigniter session

我有一个网站,要求您登录。它使用codeigniter会话。以下是上下文中的页面: http://dancedric.fourthdraft.com/http://www.fourthdraft.com/index.php/frontend/index/dancedric

为了向您展示问题,您必须实际登录系统。用户'demo'(不含引号)作为用户名和密码。现在再次加载两个链接。

他们是同一页。较短的一个只是htaccess'd重定向到第二个链接。

如果您注意到右上角的第一个链接,则会显示“登录”。在第二个,而不是登录,它显示您的名字,并显示您已经登录。

我的问题是,它们是同一页面,在那个角落,我有一个if语句: if($this->session->userdata('xxx'))然后显示他/她的名字然后控制面板链接;如果没有,只需显示'登录'。

我不知道htaccess和mod_rewrite是否正在干扰并终止第一个链接中的会话。我不认为会话已经死了,因为即使它在第一个链接上显示“登录”,当你点击它时它仍然会进入你的控制面板,即使它只是说“登录”。我希望第一个链接像第二个一样工作。如果用户已登录,则出于某种原因显示他的姓名等,因此无法按计划运行...

2 个答案:

答案 0 :(得分:0)

尝试在$config['cookie_domain'] = ""; to $config['cookie_domain'] = ".fourthdraft.com";

中设置config.php

答案 1 :(得分:0)

我有同样的问题,最后是如此明显,问题出在我的htaccess,我正在缓存html,css等。如果你把它放在.htaccess文件的末尾:

<ifModule mod_headers.c> 
<filesMatch "\\.(html|htm|php)$"> 
Header set Cache-Control "max-age=1, private, must-revalidate" 
</filesMatch> 
</ifModule> 
你可以确保你的会话正常。这是因为例如:

  • 您进入您的网站,但您没有登录。但是您已经为未登录的用户提供了页面视图。
  • 然后您将登录
  • 但是当您返回上一页时,您将看到与上一页相同的内容,就好像您没有登录一样。这是因为浏览器会显示上一个和缓存的页面,即使您的会话存在...但如果您重新加载,您将看到正确的页面。