php使用Header函数,PHP_AUTH_PW和PHP_AUTH_USER做用户验证
本文实例讲述了php使用Header函数,PHP_AUTH_PW和PHP_AUTH_USER做用户验证的方法。分享给大家供大家参考,具体如下:
在php中,可以使用Header函数做一些有趣的事情,用户验证就是其中一个很有意思的功能。具体用法:
Header("WWW-Authenticate:Basicrealm="USERLOGIN""); Header("HTTP/1.0401Unauthorized");
在页首设计这两个Header函数,页面在载入前会出现一个登录框,要求输入用户名和密码。习惯了在页面登录的我们,是否觉得这样的登录很原始,又很新奇呢?
为了获取从这个对话框中传来的用户名和密码,需要用到php提供的两个特殊变量$PHP_AUTH_USER和$PHP_AUTH_PW,要这样使用这两个特殊变量好像需要在php.ini中设置相关的选项,不然就只能像下面这样引用:
$_SERVER['PHP_AUTH_USER'] $_SERVER['PHP_AUTH_PW']
获取到用户提交上来的用户名和密码之后,要怎样处理逻辑就跟我们一般的程序处理没有什么区别了。下面提供两个例程供参考:
<?php if(!isset($PHP_AUTH_USER)){ Header("WWW-authenticate:basicrealm="XXX""); Header("HTTP/1.0401Unauthorized"); $title="LoginInstructions"; ?> <blockquote> Inordertoenterthissectionofthewebsite,youmustbeanXXX subscriber.Ifyouareasubscriberandyouarehavingtroublelogging in, pleasecontact<ahref="mailto:support@xxx.com">support@xxx.com</a>. </blockquote> <?php exit; }else{ mysql_pconnect("localhost","nobody","")ordie("UnabletoconnecttoSQLserver"); mysql_select_db("xxx")ordie("Unabletoselectdatabase"); $user_id=strtolower($PHP_AUTH_USER); $password=$PHP_AUTH_PW; $query=mysql_query("select*fromuserswhereuser_id='$user_id'andpassword='$password'"); if(!mysql_num_rows($query)){ Header("WWW-authenticate:basicrealm="XXX""); Header("HTTP/1.0401Unauthorized"); $title="LoginInstructions"; ?> <blockquote> Inordertoenterthissectionofthewebsite,youmustbeanXXX subscriber.Ifyouareasubscriberandyouarehavingtrouble loggingin, pleasecontact<ahref="mailto:support@xxx.com">support@xxx.com</a>. </blockquote> <?php exit; } $name=mysql_result($query,0,"name"); $email=mysql_result($query,0,"email"); mysql_free_result($query); } ?>
另外一个参考的例程:
<?php //assumeuserisnotauthenticated $auth=false; $user=$_SERVER['PHP_AUTH_USER']; $pass=$_SERVER['PHP_AUTH_PW']; if(isset($user)&&isset($pass)) { //connecttodb include'db_connect.php'; //SQLquerytofindifthisenteredusername/passwordisinthedb $sql="SELECT*FROMhealthed_workshop_adminWHERE user='$PHP_AUTH_USER'AND pass='$PHP_AUTH_PW'"; //puttheSQLcommandandSQLinstructionsintovariable $result=mysql_query($sql)ordie('Unabletoconnect.'); //getnumberorrowsincommand;ifmorethan0,rowisfound $num_matches=mysql_num_rows($result); if($num_matches!=0) { //matchingrowfoundauthenticatesuser $auth=true; } } if(!$auth) { header('WWW-Authenticate:Basicrealm="HealthEdPresentationAdmin"'); header('HTTP/1.0401Unauthorized'); echo'Youmustenteravalidusername&password.'; exit; } else { echo'Success!'; } ?>
更多关于PHP相关内容感兴趣的读者可查看本站专题:《PHP网络编程技巧总结》、《PHP基本语法入门教程》、《php操作office文档技巧总结(包括word,excel,access,ppt)》、《php日期与时间用法总结》、《php面向对象程序设计入门教程》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》
希望本文所述对大家PHP程序设计有所帮助。