使用PHP模拟HTTP认证_php基础_脚本之家

只要您期待在各样脚本的底工上落到实处口令保养功能,那么你能够经过整合header(State of Qatar函数和$PHP_AUTH_USER、$PHP_AUTH_PW全局变量的方法来创制叁此中央表明机制。日常依据服务器的认证乞求/响应进度如下:

1.
客户向一台Web服务器央求一个文本。如若文件在七个碰着保养的区域之内,服务器就在响应数据的尾部内增进401字符串作为回应。

2.浏览器看到该响应之后弹出客商名/口令对话框。

3.顾客在对话框中输入顾客名和口令,然后单击“OK”把这几个音讯送回去服务器实行认证。

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达成有效的检讨。

本例显示对多少个硬件编码值的认可检查,无论顾客名和口令贮存在哪儿,那在理论上完全相符。

/* 检查变量 $PHP_AUTH_USER 和$PHP_AUTH_PW 的值*/

if ((!isset || ) {

/* 空值:发送发生展现文本框的数量尾部*/

header(‘WWW-Authenticate: Basic realm=”My Private Stuff”‘);

header(‘HTTP/1.0 401 Unauthorized’);

echo ‘Authorization Required.’;

exit;

} else if () && {

/* 变量值存在,检查其是不是科学 */

if (($PHP_AUTH_USER != “validname”) || ($PHP_AUTH_PW !=
“goodpassword”)) {

/* 客商名输入错误或密码输入错误,发送产生展现文本框的数据底部*/

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”)) {

/* 客商名及密码都对的,输出成功新闻 */

echo “

You’re authorized!

“;

}

}

?>

不得不提示,当您正在接收基于文件的珍爱时,此方式并不可能对目录提供全方位的三沙保险。。那对半数以上人来说是很分明的,不过,如若您的大脑在弹出对话框和尊崇给定目录二者之间营造一个连连,你应有对此实行更为的构思。。

Julie Meloni 是i2i
Interactive的工夫COO,及Linux和吐放源代码社区的大力推动者。她创作了重重有关PHP及任何手艺的书籍,并成为对CNET
Builder.com具有深远贡献的行家。

发表评论

电子邮件地址不会被公开。 必填项已用*标注