PHP会话未设置

问题描述:

我正在使用会话变量来存储登录数据。在本地,一切工作顺利,它很好地登录并且不会注销到页面之间。PHP会话未设置

但是,当我把相同的文件放在服务器上,出于某种原因我退出了。我已经发现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[]仍然被设置。

+2

你是否开始在所有页面上进行会话 –

+0

Go到问题的根源:调查请求/响应标题,同时在页面中移动。如果会议正在消失,那么你会在那里看到它。 –

+0

@ManishJangir:会话在每一页都启动是的。 – jdepypere

会话使用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)上选择一个内容而不是重复内容

+0

将www.mysite.com放在mysite.com上或以其他方式有什么优势?什么是最简单的方法来实现呢? – jdepypere