我想實現小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任何額外的標題。回聲用戶僅用於調試目的。 –
本例無法按預期工作。至少不用這個確切的代碼。 –