发信人: dalasthunder(Dallas) 
整理人: dalasthunder(2003-05-09 03:45: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>
 
 
  ---- ┏━━━━┯━━━━┓
 ┃孝敬父母│爱护兄弟┃
 ┠────┼────┨
 ┃体贴老婆│关心朋友┃
 ┗━━━━┷━━━━┛         | 
 
 
 |