|
![]() |
名片设计 CorelDRAW Illustrator AuotoCAD Painter 其他软件 Photoshop Fireworks Flash |
|
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!"; } ?> 事实上再实际引用中不大可能如上面使用代码段明显的用户名称/密码对,而是利用数据库或者加密的密码文件存取它们。 6.3 根据指定的验证信息核实用户身份 首先,我们可以使用以下代码确定用户是否已经输入了用户名和密码,并显示出用户输入的信息。 <?php if (!isset($PHP_AUTH_USER)) { header(\\\'WWW-Authenticate: Basic realm="My Private Stuff"\\\'); header(\\\'HTTP/1.0 401 Unauthorized\\\'); echo \\\'Authorization Required.\\\'; exit; } else { echo "<P>You have entered this username: $PHP_AUTH_USER<br> You have entered this password: $PHP_AUTH_PW<br> The authorization type is: $PHP_AUTH_TYPE</p>"; } ?> 说明: isset()函数用于确定某个变量是否已被赋值。根据变量值是否存在,返回true或false。 header()函数用于发送特定的HTTP标头。注重,使用header()函数时,一定要在任何产生实际输出的HTML或PHP代码前面调用该函数。 虽然上述代码相称简朴,没有根据任何实际值对用户输入的用户名和密码进行有效验证,但是至少我们了解了如何使用PHP在客户端产生输入对话框。 下面,我们就来了解一下如何根据指定的验证信息核实用户身份。代码如下: <?php if (!isset($PHP_AUTH_USER)) { header(\\\'WWW-Authenticate: Basic realm="My Private Stuff"\\\'); header(\\\'HTTP/1.0 401 Unauthorized\\\'); echo \\\'Authorization Required.\\\'; exit; } else if (isset($PHP_AUTH_USER)) { if (($PHP_AUTH_USER != "admin") || ($PHP_AUTH_PW != "123")) { header(\\\'WWW-Authenticate: Basic realm="My Private Stuff"\\\'); header(\\\'HTTP/1.0 401 Unauthorized\\\'); echo \\\'Authorization Required.\\\'; exit; } else { echo "<P>You\\\'re authorized!</p>"; } } ?> 在这里,我们首先检查用户是否已经输入了用户名称和密码,假如没有则弹出相应对话框要求用户输入身份信息。随后,我们通过判定用户输入的信息是否符合admin/123这一指定用户帐号来授予用户访问权限或提示用户再次输入准确的信息。这种方式适用于所有用户都使用同一登录帐号的网站。 6.4 另一种简易的密码验证 假如你是在windows98下面编写和运行着你的PHP脚本,或者是你在Linux下面按默认设置,将PHP安装成一个CGI程序的话,你将无法使用上面的PHP程序来实现验证功能。为此,无边给大家提供了另外一种简易的密码验证的方式。虽然实用性不大,但是拿来学习还是挺好的。 <?php $password = "123"; // check password if($pass != $password) { echo "<html><head><title>治理密码</title></head><body>"; echo "<form method="post" action=$PHP_SELF>"; echo "请输入你的治理密码:<br>"; echo "<input type="password" name="pass">"; echo "<input type="submit" value="continue">"; echo "</form></body></html>"; } else { echo "<html><head><title>恭喜你,你已经通过了密码验证</title></head>"; echo "<script>"; echo \\\'window.location="http://gophp.heha.net/test/index.php3"\\\'; # 通过密码验证后转入的页面 echo "</script>"; } ?> 返回类别: 教程 上一教程: 用PHP生成访客计数器 下一教程: 网页推荐-怎样在MySQL中直接存储图片 您可以阅读与"PHP新手上路(七)"相关的教程: · PHP新手上路(二) · PHP新手上路(四) · PHP新手上路(四) · PHP新手上路(十四) · PHP新手上路(十二) |
![]() ![]() |
快精灵印艺坊 版权所有 |
首页![]() ![]() ![]() ![]() ![]() ![]() ![]() |