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;
}
?> 继续阅读与本文标签相同的文章
-
手机导航是怎样判断路况的?不仅是通过卫星,这几个原因使导航更智能
2026-05-14栏目: 教程
-
手机信号突然从“4G”变成“E”,是什么意思?客服给出答案
2026-05-14栏目: 教程
-
互联网架起“乌镇式生活”
2026-05-14栏目: 教程
-
微信才是内存“杀手”,别再乱清理,关闭这个功能,手机立马流畅
2026-05-14栏目: 教程
-
手机信号变成E是什么意思?看完专业人士给出的解释后,涨知识了
2026-05-14栏目: 教程
