脚本宝典收集整理的这篇文章主要介绍了PHP脚本的10个技巧(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_TY
PE这三个
全局变量只有在
PHP被当作
一个模块安装时才是有效的。如果你正在使用
PHP的CGI版本,那么你只能受限于采用基于.htaccess的认证或基于
数据库的认证方式,这样你就必需设计HT
ML表单让
用户输入
用户名和口令,再让
PHP进行
有效性的检查。
下面的这个例子
显示对2个设定值的检查,但在理论上和以上的
用户名和口令检查并无本质的不同。
<?
/* Check for values in $
PHP_AUTH_USER and $
PHP_AUTH_PW */
if ((!isset($
PHP_AUTH_USER)) || (!isset($
PHP_AUTH_PW))) {
&nbs
p; /* No values: send headers causing dia
LOG Box to appear */
header('WWW-Authenticate: Basic realm="
;my
PRivate Stuff"');
header('HTTP/1.0 401 Unauthorized');
echo 'Authorization
required.';
ex
IT;
} else if ((isset($
PHP_AUTH_USER)) && (isset($
PHP_AUTH_PW))){
/* Values cont
ain some values,so check to see if they're correct */
if (($
PHP_AUTH_USER != "validn
ame") || ($
PHP_AUTH_PW != "goodpassword")) {
/* If
either the username ente
red 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脚本的10个技巧(5)全部内容,希望文章能够帮你解决PHP脚本的10个技巧(5)所遇到的问题。
如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。