【发布时间】:2012-09-20 17:50:55
【问题描述】:
我的网站有问题,我一直不确定如何解决,只是因为它不是经常发生的。有时会,有时不会。
问题与会话和重定向有关。我正在做的是,当用户完成一项任务时,他们会被重定向。当他们被重定向时,$_SESSION 会设置一条消息,说明他们所做的事情已经完成。一旦加载了用户被重定向到的页面,并且没有显示消息,则包含该消息的会话变量将被取消设置,因为页面在最终显示给用户之前会刷新。奇怪的是,对于一个特定的重定向(当用户使用 Facebook Connect 登录时)它可以工作,但对于所有其他重定向它却不起作用。
我关于为什么会发生这种情况的最新想法是因为我正在使用 mod_rewrite。 mod_rewrite 能否导致页面在浏览器显示之前刷新?
这是我用于 URL 重写的代码:
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*) index.php [L]
【问题讨论】:
-
我认为这与 mod_rewrite 无关。发生了其他事情,您如何清除会话数据?当然,数据应该在会话中持续存在,直到您专门取消设置。
-
您需要添加一些 PHP 代码来向我们展示发生了什么。听起来您没有在新页面上开始会话,或者,如果您没有在
header函数之后调用exit,那么您的脚本中的重定向可能会在重定向后取消设置该变量。 -
事实证明在标头函数修复此问题后添加退出。我不知道在头球后退出是必要的。非常感谢!
-
我继续并将其添加到我的答案中。随意接受这个作为答案。很高兴我能提供帮助。您可能已经猜到了,我之前也处理过完全相同的问题。
标签: php session mod-rewrite redirect