php使用Header函数,PHP_AUTH_PW和PHP_AUTH_USER做用户验证


Posted in PHP onMay 04, 2016

本文实例讲述了php使用Header函数,PHP_AUTH_PW和PHP_AUTH_USER做用户验证的方法。分享给大家供大家参考,具体如下:

在php中,可以使用Header函数做一些有趣的事情,用户验证就是其中一个很有意思的功能。具体用法:

Header("WWW-Authenticate: Basic realm="USER LOGIN"");
Header("HTTP/1.0 401 Unauthorized");

在页首设计这两个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: basic realm="XXX"");
Header("HTTP/1.0 401 Unauthorized");
$title="Login Instructions";
?>
<blockquote>
In order to enter this section of the web site, you must be an XXX
subscriber. If you are a subscriber and you are having trouble logging
in,
please contact <a href="mailto:support@xxx.com">support@xxx.com</a>.
</blockquote>
<?php
exit;
} else {
mysql_pconnect("localhost","nobody","") or die("Unable to connect to SQL server");
mysql_select_db("xxx") or die("Unable to select database");
$user_id=strtolower($PHP_AUTH_USER);
$password=$PHP_AUTH_PW;
$query = mysql_query("select * from users where user_id='$user_id' and password='$password'");
if(!mysql_num_rows($query)) {
Header("WWW-authenticate: basic realm="XXX"");
Header("HTTP/1.0 401 Unauthorized");
$title="Login Instructions";
?>
<blockquote>
In order to enter this section of the web site, you must be an XXX
subscriber. If you are a subscriber and you are having trouble
logging in,
please contact <a href="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
//assume user is not authenticated
$auth = false;
$user = $_SERVER['PHP_AUTH_USER'];
$pass = $_SERVER['PHP_AUTH_PW'];
if ( isset($user) && isset($pass) )
{
//connect to db
include 'db_connect.php';
//SQL query to find if this entered username/password is in the db
$sql = "SELECT * FROM healthed_workshop_admin WHERE
user = '$PHP_AUTH_USER' AND
pass = '$PHP_AUTH_PW'";
//put the SQL command and SQL instructions into variable
$result = mysql_query($sql) or die('Unable to connect.');
//get number or rows in command; if more than 0, row is found
$num_matches = mysql_num_rows($result);
if ($num_matches !=0)
{
//matching row found authenticates user
$auth = true;
}
}
if (!$auth)
{
header('WWW-Authenticate: Basic realm="Health Ed Presentation Admin"');
header('HTTP/1.0 401 Unauthorized');
echo 'You must enter a valid username & password.';
exit;
}
else
{
echo 'Success!';
}
?>

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
用PHP 快速生成 Flash 动画的方法
Mar 06 PHP
PHP项目开发中最常用的自定义函数整理
Dec 02 PHP
PHP 设计模式之观察者模式介绍
Feb 22 PHP
php目录操作实例代码
Feb 21 PHP
PHP采用XML-RPC构造Web Service实例教程
Jul 16 PHP
PHP中auto_prepend_file与auto_append_file用法实例分析
Sep 22 PHP
php读取目录及子目录下所有文件名的方法
Oct 20 PHP
php curl请求信息和返回信息设置代码实例
Apr 27 PHP
简单解析PHP程序的运行流程
Jun 23 PHP
PHP API接口必备之输出json格式数据示例代码
Jun 27 PHP
PHP 多任务秒级定时器的实现方法
May 13 PHP
PHP7新功能总结
Apr 14 PHP
PHP实现获取并生成数据库字典的方法
May 04 #PHP
PHP创建/删除/复制文件夹、文件
May 03 #PHP
Yii2使用swiftmailer发送邮件的方法
May 03 #PHP
php读取torrent种子文件内容的方法(测试可用)
May 03 #PHP
Yii2 输出xml格式数据的方法
May 03 #PHP
php面向对象值单例模式
May 03 #PHP
php使用ffmpeg获取视频信息并截图的实现方法
May 03 #PHP
You might like
PHP写的获取各搜索蜘蛛爬行记录代码
2012/08/21 PHP
thinkPHP实现签到功能的方法
2017/03/15 PHP
PHP实现websocket通信的方法示例
2018/08/28 PHP
laravel5.6 框架操作数据 Eloquent ORM用法示例
2020/01/26 PHP
飞鱼(shqlsl) javascript作品集
2006/12/16 Javascript
Javascript miscellanea -display data real time, using window.status
2007/01/09 Javascript
Jquery中使用setInterval和setTimeout的方法
2013/04/08 Javascript
jquery弹出框的用法示例(2)
2013/08/26 Javascript
jQuery自定义事件的简单实现代码
2014/01/27 Javascript
JS+CSS实现电子商务网站导航模板效果代码
2015/09/10 Javascript
Node.js程序中的本地文件操作用法小结
2016/03/06 Javascript
模仿password输入框的实现代码
2016/06/07 Javascript
Node.js制作简单聊天室
2017/01/12 Javascript
Three.js开发实现3D地图的实践过程总结
2017/11/20 Javascript
AngularJS实时获取并显示密码的方法
2018/02/06 Javascript
Node.js文件编码格式的转换的方法
2018/04/27 Javascript
不刷新网页就能链接新的js文件方法总结
2020/03/01 Javascript
快速了解Vue父子组件传值以及父调子方法、子调父方法
2020/07/15 Javascript
[06:37]2014DOTA2国际邀请赛 昔日王者渴望重回巅峰
2014/07/12 DOTA
[42:48]完美世界DOTA2联赛PWL S3 Magma vs INK ICE 第二场 12.11
2020/12/16 DOTA
Python网站验证码识别
2016/01/25 Python
python 自动批量打开网页的示例
2019/02/21 Python
Python小白必备的8个最常用的内置函数(推荐)
2019/04/03 Python
anaconda如何查看并管理python环境
2019/07/05 Python
Django缓存系统实现过程解析
2019/08/02 Python
利用Python的turtle库绘制玫瑰教程
2019/11/23 Python
python实现全排列代码(回溯、深度优先搜索)
2020/02/26 Python
浅谈python出错时traceback的解读
2020/07/15 Python
关于Python 解决Python3.9 pandas.read_excel(‘xxx.xlsx‘)报错的问题
2020/11/28 Python
详解CSS3开启硬件加速的使用和坑
2017/08/21 HTML / CSS
意大利高端时尚买手店:Stefania Mode
2018/03/01 全球购物
舞蹈教师自荐信
2014/01/27 职场文书
大学中国梦演讲稿
2014/04/23 职场文书
护士节演讲稿开场白
2014/08/25 职场文书
超市开业庆典活动策划方案
2014/09/15 职场文书
Python中的xlrd模块使用整理
2021/06/15 Python