PHP会话未设置

PHP会话未设置,php,session,unset,Php,Session,Unset,我正在使用会话变量来存储登录数据。在本地,一切工作都很顺利,它可以很好地登录,而不会在页面之间注销 但是,当我把相同的文件放在服务器上时,由于某种原因,我被注销了。我已经找到了post,并尝试使用以下代码来防止动态页面的缓存: header("Cache-Control: no-cache, must-revalidate"); header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Date in the past 虽然这似乎不起作用。这个

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

但是,当我把相同的文件放在服务器上时,由于某种原因,我被注销了。我已经找到了post,并尝试使用以下代码来防止动态页面的缓存:

header("Cache-Control: no-cache, must-revalidate"); 
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Date in the past
虽然这似乎不起作用。这个问题还有其他可能的解决办法吗

编辑:请注意,
session\u start()
在每一页上


编辑2:我做了进一步的调查,在
mysite.com
上,我的一些链接似乎链接到了
www.mysite.com
。转到此新页面会使
$\u会话[]
变量未设置,当使用“后退”按钮返回上一页时,您可以看到
$\u会话[]
仍处于设置状态。

会话使用cookies,因此当您将域(www.site.com更改为site.com)时,这些cookies不会被传输

将Web服务器设置为具有一个规范url,并将所有人重定向到该url(例如,在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,除非你在这两个网站上做了一些不同的事情,让人们多键入四个字符似乎毫无价值。我对搜索引擎优化的理解(站不住脚)是,你最好选择一个,而不是在两个URL(site.com/stuff和www.site.com/stuff)上有重复的内容。

你是否在所有页面上都开始了会话问题的根源:在移动页面时调查请求/响应标题。如果会话正在消失,那么你会在那里看到它。@ManishJangir:会话会在每个页面上开始是的。@SverriM.Olsen:我该怎么做?@arbitter:看看你的开发工具的“网络”选项卡,它应该在那里。拥有www.mysite.com比拥有mysite.com有什么优势吗?实现这一点最简单的方法是什么?