我希望能够在他们访问我们的网站时获取登录用户的信息,这样他们就不需要登录了。 我已经被告知,当你在Windows IE上时它只能在I.E中出现。一旦他们用他们的Windows凭证登录。
我已经在网上搜索了所有这三个($_SERVER['AUTH_USER']
,$_SERVER['LOGON_USER']
,$_SERVER['REMOTE_USER']
),因此我不确定要检查哪一个。
其次,我使用带有IIS的Windows服务器,无论我在网上尝试和搜索过什么,但没有任何作用。
我可以看到$_SERVER
中的变量,但以上所有都是空字符串。
如何解决此问题?
供参考我使用带有php v7.1的Windows Server 2012
同样在我的php.ini文件中,我看到它们都具有以下值。
$_SERVER['LOGON_USER']: no value
(就像这样)
但是我还搜索了如何在.ini文件中设置这些内容而没有太多运气。
header('WWW-Authenticate: NTLM', true);
// with this die there is a user and password prompt
// if i click cancel then it sends the information through to the
// server vars as expected.
// when we cancel here it registers as two requests as my logs in the
// log shows up two times.
// without it the login page loads with symfony but no values ever
// come through and i cant log in the user.
die();
答案 0 :(得分:1)
为了做到这一点,系统应该在内联网上!
您可以使用以下代码轻松获取系统用户名:
<?php echo getenv("username"); ?>
为了首先获取登录用户,请确保已启用Windows身份验证并禁用匿名。您必须先发送NTLM-Authenticate标头。之后,$ _SERVER-Vars
中应该有合适的用户header('WWW-Authenticate: NTLM');
$_SERVER['AUTH_USER'];
这仅适用于I.E,您还需要配置I.E进行自动登录
配置Internet Explorer以进行自动登录
通过选择“Internet选项”打开“Internet选项”对话框 从控制面板或Internet中的“工具”菜单 资源管理器。
在“Internet选项”对话框的“安全”选项卡上,选择“本地” 单击Intranet,然后单击自定义级别。
在“安全设置”对话框的“登录”下,选择“自动” 仅在Intranet区域中登录,然后单击“确定”。
在“安全设置”选项卡上的“Internet选项”对话框中 仍然选择了本地Intranet,单击“站点”。
在“本地Intranet”对话框中,单击“高级”。
在下一个对话框(也称为“本地Intranet”)中,键入URL 您的Communicator Web Access站点(例如, 将此网站添加到区域中https://cwaserver.contoso.com) 框,然后单击添加。
在“本地Intranet”对话框中,单击“确定”。
在原始的“本地Intranet”对话框中,单击“确定”。
在“Internet选项”对话框中,单击“确定”。