我们有一个新的b2b供应商想要通过URL使用基本身份验证。
他们希望像这样进行身份验证:
//URL coming into our server
http://usernametext:passwordtext@our.company.com/listener.php
如何通过listener.php脚本从URL获取用户名和密码?
我已尝试根据php手册页设置基本的auth标头,但它会弹出一个登录框,这不是我需要的,因为这些是互相交流的网络服务,而不是人:
if (!isset($_SERVER['PHP_AUTH_USER'])) {
header('WWW-Authenticate: Basic realm="My Realm"');
header('HTTP/1.0 401 Unauthorized');
echo '<response><error>No username and password found</error></response>';
exit;
} else {
//process request if username & password are legit
}
答案 0 :(得分:2)
感谢所有提供的解决方案。以下是为我解决这个问题的原因:
这是服务器配置问题。我需要在PHP中编译Apache extension。一旦我这样做,$ _SERVER数组包含$ _SERVER ['PHP_AUTH_USER']和$ _SERVER ['PHP_AUTH_PW']值。在此之前,$ _SERVER数组
中缺少这些值答案 1 :(得分:0)
为什么不通过好旧的$ _GET发送信息?就像是
http://our.company.com/listener.php?usr='me'&pswd='secret'
答案 2 :(得分:-1)
可能会有所帮助:
if (!isset($_SERVER['PHP_AUTH_USER'])) {
header('WWW-Authenticate: Basic realm="My Realm"');
header('HTTP/1.0 401 Unauthorized');
echo 'Text to send if user hits Cancel button';
exit;
} else {
echo "<p>Hello {$_SERVER['PHP_AUTH_USER']}.</p>";
echo "<p>You entered {$_SERVER['PHP_AUTH_PW']} as your password.</p>";
}
您可以查看更详细的信息:http-auth
更新:如果您不需要弹出框(确认用户+在非必需的auth站点上传递),只需在目录上添加.htaccess即可。
AuthType Basic
AuthName "Password Required"