gpt4 book ai didi

php - session 变量未设置,但仅在 Internet Explorer 中设置,并非在所有计算机上设置

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:40:07 26 4
gpt4 key购买 nike

登录到我正在处理的站点,在我的本地计算机上按预期运行,但在远程服务器上失败,但仅在 Internet Explorer 中。关键在于它可以在本地 IE 中运行,而不是在远程计算机上运行。

这到底是什么原因造成的?我已经逐步完成远程机器上的代码,可以看到在数据库中检查输入的登录值,找到它们,然后调用登录函数。这会设置两个 $_SESSION 变量并重定向到主管理页面。但是,仅在 IE 中(而不是在本地计算机上运行时……这是关键)在您到达主管理页面时 $_SESSION 变量不存在。 var_dump($_SESSION) 给出了我在本地环境中运行它时在每个浏览器上的期望,以及在远程服务器上运行时在除 IE 6、7 和 8 之外的每个浏览器中的期望(我得到的地方一个空值,就好像没有为 $_SESSION 设置任何东西一样)。

这真的让我很困惑,所以任何建议都将不胜感激。

举个例子...在 IE 中,在本地运行,var_dump 给我:

array
'Username' => string 'theusername' length=11
'UserID' => string 'somevalue' length=9

在远程服务器上运行(仅 IE...在其他浏览器中工作正常)var_dump 给我:

array(0){}

代码(一个最小的例子......虽然这个问题真的不需要代码示例):

$User = GetUser($Username, $Password);
if ($User->UserID <> "") { // this works so we call Login()...
Login($User); // this also works and gives expected results. on to redirect...
header("Location: index.php"); // a var_dump at index.php shows that there is no session data at all in IE, remotely.
} else {
header("Location: login.php");
}


function Login($data) {
$_SESSION['Username'] = $data->Username;
$_SESSION['UserID'] = $data->UserID;
// a var dump here gives the expected data in every browser
}

编辑:解决了这个问题。事实是测试服务器上的域名中有下划线。不知道为什么,现在也没有时间用谷歌搜索它,但下划线(名称类似于 some_client.ourcompany.com)是问题所在。一定要爱上 Internet Explorer……它就像一个你无法避免的消极好斗的同事。

最佳答案

将其作为答案放入(由用户 tuzo 建议)以使其更易于查找。解决了这个。事实是测试服务器上的域名中有下划线。不知道为什么,现在也没有时间用谷歌搜索它,但下划线(名称类似于 some_client.ourcompany.com)是问题所在。一定要爱上 Internet Explorer……它就像一个你无法避免的消极好斗的同事。

摘自另一个 SO 答案...准确解释了发生了什么:其中一个子域是否使用下划线? IE 无法接受来自不遵循 URI RFC 的子域的 cookie。 (http://www.ietf.org/rfc/rfc2396.txt)

关于php - session 变量未设置,但仅在 Internet Explorer 中设置,并非在所有计算机上设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2861855/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com