发信人: dalasthunder(Dallas)
整理人: dalasthunder(2002-07-25 07:02:35), 站内信件
|
<?
// HTTP 认证代码,本程序在 Apache 与 IIS 下都能正常运行
// IIS 属性页中 Directory Security 一栏中的 Anonymous access and authentication control,
// 点击 Edit ,其中的 Authenticated access 内
// Digest authentication for Windows domain servers
// Basic authentication
// Integrated Windows authentication
// 三项(或所有的项目)都不要选中。
// PHP 不需要加载入 ISAPI Filters。
// 需要在 php.ini 中设置 register_gloables = On 才能正常运行
// 否则需要将 $PHP_AUTH_USER 改成 $_SERVER["PHP_AUTH_USER"] ,其余类推
// 在 IIS 下,$PHP_AUTH_USER 变量与 $PHP_AUTH_PW 变量为空,取而代之的是 $HTTP_AUTHORIZATION
// 所以该 if 语句仅会在 IIS 或类似 Web Server 下执行
if ($PHP_AUTH_USER == "" && $PHP_AUTH_PW == "" && ereg("^Basic ", $HTTP_AUTHORIZATION)) {
// 对 $HTTP_AUTHORIZATION 用 base64 解码并给 $PHP_AUTH_USER 和$PHP_AUTH_PW 赋值
list($PHP_AUTH_USER, $PHP_AUTH_PW) = explode(":", base64_decode(substr($HTTP_AUTHORIZATION, 6))); //前六个字符是"Basic ",所以过滤掉
}
// 默认尚未验证通过
$authenticated = 0;
if ($PHP_AUTH_USER != "" || $PHP_AUTH_PW != "") {
// 在这里放置自己的用户名/密码验证代码
// 如果验证通过给 $authenticated 赋值 true
$authenticated = ($PHP_AUTH_USER == "Dallas" && $PHP_AUTH_PW == "123456");
}
if(!$authenticated) {
// 弹出登录窗口,在输入用户名密码之后程序会从头开始运行
header("WWW-Authenticate: Basic realm=\"HTTP 密码认证\"");
if (ereg("Microsoft", $SERVER_SOFTWARE))
header("Status: 401 Unauthorized");
else
header("HTTP/1.0 401 Unauthorized");
// 以下代码仅在点击登录窗口中的 Cancel 按钮或者密码输入错误三次之后运行
echo "用户名/密码不对";
exit;
}
// 以下代码在成功认证之后才会运行
?>
<html>
<head><title>通用HTTP认证代码</title></head>
<body>
<?
echo "<P>你输入的用户名是:\"$PHP_AUTH_USER\"";
echo "<P> 你输入的密码是:\"$PHP_AUTH_PW\"";
echo "<P>你的认证字符串是:\"$HTTP_AUTHORIZATION\"";
echo "<P>可以在这里放一个 phpinfo() 函数看看 _SERVER 变量。";
?>
</body>
</html>
---- ┏━━━━┯━━━━┓
┃孝敬父母│爱护兄弟┃
┠────┼────┨
┃体贴老婆│关心朋友┃
┗━━━━┷━━━━┛ |
|