快精灵印艺坊 您身边的文印专家
广州名片 深圳名片 会员卡 贵宾卡 印刷 设计教程
产品展示 在线订购 会员中心 产品模板 设计指南 在线编辑
 首页 名片设计   CorelDRAW   Illustrator   AuotoCAD   Painter   其他软件   Photoshop   Fireworks   Flash  

 » 彩色名片
 » PVC卡
 » 彩色磁性卡
 » 彩页/画册
 » 个性印务
 » 彩色不干胶
 » 明信片
   » 明信片
   » 彩色书签
   » 门挂
 » 其他产品与服务
   » 创业锦囊
   » 办公用品
     » 信封、信纸
     » 便签纸、斜面纸砖
     » 无碳复印纸
   » 海报
   » 大篇幅印刷
     » KT板
     » 海报
     » 横幅

PHP脚本的8个技巧(5)

采用PHP的用户认证

  假如你希望在每一个脚本的基础上实现口令保护功能,那么你可以联合使用header()函数和$PHP_AUTH_USER、$PHP_AUTH_PW全局变量来创造一个基本的认证方案。通常的、基于服务器的认证哀求/响应回合很象下面这个样子:

1.用户向一台Web服务器哀求一个文件。假如文件在一个受到保护的区域以内,服务器就在响应的文件头内加上401(非法用户)字符串作为回应。

2.浏览器看见该响应之后就弹出用户名/口令对话框。

3.用户在对话框中输入用户名和口令,然后单击“确认”按钮把这些信息送回到服务器。

4.假如用户名和口令有效,被保护的文件将对用户显示,并且,只要现在经过证明的用户一直在保护区域以内。以上的认证过程都有效。  

  一个简朴的PHP脚本可以模拟HTTP认证哀求/响应系统,方式就是发送适当的HTTP头来使得用户名/口令对话框自动出现在客户机的屏幕上。PHP把用户输入对话框的信息存储在$PHP_AUTH_USER和$PHP_AUTH_PW变量中。使用这些变量,你就可以把不符合用户名/口令检验的列表存放到某个文本文件、数据库或者你任何自己指定的地方

注重:$PHP_AUTH_USER、$PHP_AUTH_PW和$PHP_AUTH_TYPE这三个全局变量只有在PHP被当作一个模块安装时才是有效的。假如你正在使用PHP的CGI版本,那么你只能受限于采用基于.htaccess的认证或基于数据库的认证方法,这样你就必需设计HTML表单让用户输入用户名和口令,再让PHP进行有效性的检查。

下面的这个例子显示对2个设定值的检查,但在理论上和以上的用户名和口令检查并无本质的不同。

<?
/* Check for values in $PHP_AUTH_USER and $PHP_AUTH_PW */

if ((!isset($PHP_AUTH_USER)) || (!isset($PHP_AUTH_PW))) {

/* No values: send headers causing dialog box to appear */
header(\\'WWW-Authenticate: Basic realm="My Private Stuff"\\');
header(\\'HTTP/1.0 401 Unauthorized\\');
echo \\'Authorization Required.\\';
exit;

} else if ((isset($PHP_AUTH_USER)) && (isset($PHP_AUTH_PW))){

/* Values contain some values, so check to see if they\\'re correct */

if (($PHP_AUTH_USER != "validname") || ($PHP_AUTH_PW != "goodpassword")) {
/* If either the username entered is incorrect, or the password entered is incorrect, send the headers causing dialog box to appear */
header(\\'WWW-Authenticate: Basic realm="My Private Stuff"\\');
header(\\'HTTP/1.0 401 Unauthorized\\');
echo \\'Authorization Required.\\';
exit;
} else if (($PHP_AUTH_USER == "validname") || ($PHP_AUTH_PW == "goodpassword")) {
/* if both values are correct, print success message */
echo "<P>You\\'re authorized!</p>";
}
}
?>

 

 

 

 

 

 

 

 

 

 

 

 

 

 

记住,当你正在使用基于文件的保护措施时,这种方法不是绝对能保护目录的安全毯。这对你们中的大多数人而言是显而易见的,但是,假如你的大脑在弹出对话框之间和保护给定目录之间建立一个连接,那么你必须费点劲来熟悉这一进程。


返回类别: 教程
上一教程: PHP Security Consortium
下一教程: php写的域名查询系统whois

您可以阅读与"PHP脚本的8个技巧(5)"相关的教程:
· PHP脚本的10个技巧(4)
· PHP脚本的10个技巧(7)
· PHP脚本的8个技巧(4)
· PHP脚本的8个技巧(8)
· PHP脚本的10个技巧(5)
    微笑服务 优质保证 索取样品