我想实现小API,为此我必须检查用户的API密钥与基本身份验证,但由于某些原因,即使最简单的例子不工作:PHP基本身份验证不起作用
<?php
include '../config.inc.php';
$user = $_SERVER['PHP_AUTH_USER'];
$validated = false;
if($user == $api_key);
$validated = true;
if (!$validated) {
header('WWW-Authenticate: Basic realm="API"');
header('HTTP/1.0 401 Unauthorized');
exit ("Not authorized");
}
和我觉得现在的问题是,我'使用mod_rewrite
访问API本身(不同的API模块包括取决于已经访问了哪些页面),那就是:
RewriteEngine On
RewriteBase /my_admin/api/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php
当访问的index.php我得到这个错误:
Notice: Undefined index: PHP_AUTH_USER in C:\xampp\htdocs\my_admin\api\index.php on line 5
但是,在上面的文件夹,它工作正常。什么可能导致这个问题,以及如何解决这个问题?谢谢。
这里有一些错误。 1.在第一次调用中,'$ _SERVER ['PHP_AUTH_USER']'永远不会存在,因为浏览器尚未获得标题(您在下面设置),并且用户还没有填写任何信息。 2.在发送标题之前,你有'echo $ user'。在发送标题之前您不能输出任何内容,否则您将收到“标题已发送”。 –
当我将它放到api文件夹上的一个目录中时,此示例正常工作。即使没有sendind任何额外的标题。回声用户仅用于调试目的。 –
本例无法按预期工作。至少不用这个确切的代码。 –