PHP 的 HTTP 認證機制僅在 PHP 以 Apache 模組方式運行時才有效,因此該功能不適用於 CGI 版本。在 Apache 模組的 PHP 指令碼中,可以用 header() 函數來向用戶端瀏覽器發送“Authentication Required”資訊,使其彈出一個使用者名稱/密碼輸入視窗。當使用者輸入使用者名稱和密碼後,包含有 URL 的 PHP 指令碼將會再次和預定義變數 PHP_AUTH_USER、PHP_AUTH_PW 和 AUTH_TYPE 一起被調用,這三個變數分別被設定為使用者名稱,密碼和認證類型。預定義變數儲存在 $_SERVER 或者 $HTTP_SERVER_VARS 數組中。系統僅支援“基本的”認證
<?php教程
$authorized = FALSE;
if (isset($_SERVER['PHP_AUTH_USER']) && isset($_SERVER['PHP_AUTH_PW'])) {
$authFile = file("./password.txt");
foreach ($authFile as $login) {
list($username, $password) = explode(":", $login);
$password = trim($password);
if (($username == $_SERVER['PHP_AUTH_USER']) && ($password == md5($_SERVER['PHP_AUTH_PW']))) {
$authorized = TRUE;
break;
}
}
}
// If not authorized, display authentication prompt or 401 error
if (! $authorized) {
header('WWW-Authenticate: Basic Realm="Secret Stash"');
header('HTTP/1.0 401 Unauthorized');
print('You must provide the proper credentials!');
exit;
}
?>
<!-- password.txt
joe:60d99e58d66a5e0f4f89ec3ddd1d9a80
-->