PHP会话未设置

时间:2013-05-18 13:04:28

标签: php session unset

我正在使用会话变量来存储登录数据。在本地,一切都很顺利,它很好地登录,不会在页面之间注销。

但是当我在服务器上放置相同的文件时,出于某种原因我会被注销。我已经找到了this帖子,并尝试使用以下代码来阻止动态网页的缓存:

header("Cache-Control: no-cache, must-revalidate"); 
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Date in the past

虽然这似乎不起作用。这个问题还有其他可能的解决方案吗?

修改:请注意每页都有session_start()

修改2 :我进行了一些进一步调查,当www.mysite.com上显示我的部分链接指向mysite.com时。转到此新页面会导致$_SESSION[]变量没有设置,当使用后退按钮返回上一页时,您可以看到$_SESSION[]仍然设置。

1 个答案:

答案 0 :(得分:3)

会话使用Cookie,因此当您更改域名(www.site.com到site.com)时,这些Cookie不会被传输。

将您的网络服务器设置为拥有一个规范网址,并将所有人重定向到该网址(例如,在site.com上标准化,将www.site.com重定向到site.com)。

这就是我在apache中处理重定向的方式:

ServerAlias www.site.com my.site.com site.net www.site.net sites.com www.sites.com site.com
RewriteEngine On
RewriteCond %{SERVER_NAME} !=site.com
RewriteRule ^(.*) https://site.com/$1 [R=301]

我更喜欢site.com而不是www.site.com,除非你在他们两个人身上做了不同的事情,因为人们输入额外的四个字符似乎毫无价值。我(跛脚)对SEO的理解是你最好选择一个而不是在两个网址上有重复的内容(site.com/stuff和www.site.com/stuff)