文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>ISAPI模式下用 PHP4进行HTTP认证的方法

ISAPI模式下用 PHP4进行HTTP认证的方法

时间:2006-02-23  来源:redware

  在 PHP 4.3.3 之前,由于微软 IIS 的限制,HTTP 认证无法工作在 IIS 服务器的 CGI 模式下。为了能够使其在 PHP 4.3.3 以上版本能够工作,需要编辑 IIS 的设置“目录安全”。点击“编辑”并且只选择“匿名访问”,其它所有的复选框都应该留空。(经测试,PHP4.3.4在Windows Server 2003的ISAPI模式下也要这样设置)
  在 IIS 的 ISAPI 模式下使用 PHP 4 的时候,无法使用 PHP_AUTH_* 变量,而只能使用 HTTP_AUTHORIZATION。例如,考虑如下代码:list($user, $pw) = explode(':', base64_decode(substr($_SERVER['HTTP_AUTHORIZATION'], 6)));。
  IIS 注意事项: 要 HTTP 认证能够在 IIS 下工作,PHP 配置选项 cgi.rfc2616_headers 必须设置成 0(默认值)。
  所以通过上面的修改后,下面以phpMyAdmin2.7.0中config.default.php文件为例来说明如何实现ISAPI模式下用PHP4进行HTTP认证:
1、将以下代码复制到config.default.php的最前面
<?php
// if we are using IIS, we need to set $PHP_AUTH_USER and $PHP_AUTH_PW
list($PHP_AUTH_USER, $PHP_AUTH_PW) = explode(':', base64_decode(substr($HTTP_AUTHORIZATION, 6)));
if (!isset($PHP_AUTH_USER) || !isset($PHP_AUTH_PW) || $PHP_AUTH_USER=='' || $PHP_AUTH_PW=='')
{
  Header("WWW-Authenticate: Basic realm=\"MySQL Logon\"");
  Header("HTTP/1.0 401 Unauthorized");
  die("MySQL Login fail!");
}
?> 2、查找config.default.php文件的以下各行,修改后为:
$cfg['Servers'][$i]['auth_type']     = 'http';
$cfg['Servers'][$i]['user']          = $PHP_AUTH_USER;
$cfg['Servers'][$i]['password']      = $PHP_AUTH_PW;
$cfg['Servers'][$i]['only_db']       = $PHP_AUTH_USER; //若是root管理员专用,则把此$PHP_AUTH_USER改为两个单引号

  但仍有一个不完善的地方,就是用户名或密码输入错误,则需要等到后面的程序运行后才能判断出来(错误信息为:用户名/密码错误,访问被拒绝。)。这时IE浏览器只需关闭当前窗口然后重新打开IE浏览器即可;Firefox浏览器则需要“工具”→“清除私有数据”→……然后才能解决问题。
-----------------------------

详情及参考文献

相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载