第2章 PHP3的特点

本章目录
 
PHP的HTTP认证功能
 
使用PHP动态生成GIF图象
 
文件上传支持
 
HTTP cookie支持
 
数据库支持
 
正则表达式
 
错误处理
 
PHP源代码查看器

PHP的HTTP认证功能

HTTP认证功能仅当PHP作为Apache的模块运行时才可用。在一个Apache的PHP解析模块中, 可以使用Header() 函数发送一个"请进行身份验证"的消息到客户端的浏览器上,这将在客户端弹出一个要求输入用户名和密码的窗口。 当用户填入了用户名和密码后,包含该段PHP程序的网页会再次被调用,有三个变量被传入程序, $PHP_AUTH_USER, $PHP_AUTH_PW和 $PHP_AUTH_TYPE 分别代表用户名,密码和认证类型。注意:此功能只支持基本身份验证。

下面是一段HTTP认证的程序:

Example 2-1. HTTP Authentication example

<?php
  if(!isset($PHP_AUTH_USER)) {
    Header("WWW-Authenticate: Basic realm=\"My Realm\"");
    Header("HTTP/1.0 401 Unauthorized");
    echo "Text to send if user hits Cancel button\n";
    exit;
  } else {
    echo "Hello $PHP_AUTH_USER.<P>";
    echo "You entered $PHP_AUTH_PW as your password.<P>";
  }
?>

例中只是简单的把客户端填写的用户名和密码显示出来,同样你也可以加入验证用户名和密码是否有效的代码。 例如到一个数据库中去查寻,或者检索一个dbm文件.

注意:多虫的IE中有一个关于HTTP请求的BUG。目前,必须在你送出HTTP/1.0 401请求头前,发出WWW-Authenticate信息,认证请求才被接受。

为了避免某些别有用心的人通过编写程序窃取分离结构的页面的用户密码,对于那些允许外部认证的特殊页面,$PHP_AUTH这个变量将不被赋值。

注意,以上方法不能阻止某些人使用在该服务器上已经获得认证的URL来窃取密码,从而对非授权URL进行控制的情况。