6. 密码验证
也许你想在自己的网站放上你的照片集,而且只想给自己知心的朋友看,这时你需要一个密码验证的程序。
6.1 基于HTTP验证
如何用
php来实现密码验证的功能呢?我们可以使用简短的
php代码,使用函数header()发送HTTP标头强制验证,客户端浏览器则弹出供输入用户名和密码的对话框。在
php中,客户端用户输入的信息传送到服务端之后自动保存在$
php_AUTH_USER, $
php_AUTH_PW, 以及 $
php_AUTH_TYPE这三个全局变量中。利用这些变量,我们就可以根据实现保存在数据文件或
数据库中的用户帐号信息验证用户身份。
不过在这里需要提醒使用者注意的一点是:只有在Apache模块方式运行的时候,
php脚本才能使用$
php_AUTH_USER, $
php_AUTH_PW, 以及 $
php_AUTH_TYPE这三个变量。如果用户使用的是CGI模式的
php则无法实现基于HTTP的验证功能。
6.2 下面,我们就来详细介绍一下如何使用
php对用户身份进行验证。
在下例中,我们是使用$
php_AUTH_USER和$
php_AUTH_PW这两个变量来验证进入者是否合法并允许进入。在本例中被允许登录的用户名称和密码对分别为tnc和nature:
<?
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 buttonn";
exit;
}
else
{
if ( !($
php_AUTH_USER=="tnc" ;; $
php_AUTH_PW=="nature") )
{
// 如果是错误的用户名称/密码对,强制再验证
Header("WWW-Authenticate: Basic realm="My Realm"");
Header("HTTP/1.0 401 Unauthorized");
echo "ERROR : $
php_AUTH_USER/$
php_AUTH_PW is invalid.";
exit;
}
else
{
echo "Welcome tnc!";
}
?>