自动登录,NTLM头似乎擦除$_SESSION重定向



我正在尝试创建一个自动登录脚本。这些电脑在XP上使用IE8。代码成功检索用户的Windows用户名并将其放入会话中,但是一旦重定向完成,会话将被清除干净。

在index . php

:

session_start();
if (!isset($_SERVER["AUTH_USER"]) || $_SERVER["AUTH_USER"] == '') {
      header('WWW-Authenticate: NTLM', false);
      exit;
}
# Extract username
$user = explode('\',$_SERVER["AUTH_USER"]);
$_SESSION['username'] = strtolower($user[1]);
print_r($_SESSION); // Success!
header("Location: index2.php");
在index2.php:

session_start()
print_r($_SESSION); // Fail. array()
关键问题似乎是标题部分,因为在测试期间,我已经删除了它,并在一个虚拟用户名,它成功地传递到下一页。我需要头虽然,因为它需要做的NTLM身份验证(即。将AUTH_USER的详细信息放在$_SERVER数组中。

编辑我在IIS中关闭了匿名身份验证,然后删除了头部分,所有工作。但是,这会产生许多其他问题。

我想为那些像我一样被困在这个问题上的人确认一下Paul发布和回答的问题。

我有多个网站在IIS下使用PHP运行。伟大的工作。然后我添加了一个使用NTLM认证安全(即Windows登录)的站点。在第1页建立的会议没有转到第2页。我转储了$_SERVER设置,播放了INI文件,没有eval。我将应用程序分解为像Paul这样的基本框架,并确认它只在提示身份验证时发生。

要复制,启动一个新的浏览器窗口,使用windows身份验证登录到第1页-不要点击保存密码,点击链接到第2页-没有会话变量。关闭浏览器并重新开始(以重置身份验证)。这一次,在浏览页面之前从第1页删除身份验证内容。转到第2页,会话在那里。

"目录安全/认证和访问控制"属性设置中关闭"启用匿名访问"解决了我的网站的问题。

谢谢保罗。

在会话开始前添加session_set_cookie_params(0)。IE8在处理非持久性cookie时存在问题。

最新更新