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 无限级数据JSON格式及JS解析
Jul 17 PHP
深入理解PHP之require/include顺序 推荐
Jan 02 PHP
php判断数组中是否存在指定键(key)的方法
Mar 17 PHP
两种php去除二维数组的重复项方法
Nov 04 PHP
Thinkphp框架开发移动端接口(1)
Aug 18 PHP
php中final关键字用法分析
Dec 07 PHP
解析PHP之提取多维数组指定列的方法
Jan 03 PHP
详解PHP函数 strip_tags 处理字符串缺陷bug
Jun 11 PHP
OAuth认证协议中的HMACSHA1加密算法(实例)
Oct 25 PHP
PHP自定义递归函数实现数组转JSON功能【支持GBK编码】
Jul 17 PHP
Smarty模板类内部原理实例分析
Jul 03 PHP
php求斐波那契数的两种实现方式【递归与递推】
Sep 09 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 header功能的使用
2013/10/28 PHP
PHP 匿名函数与注意事项详细介绍
2016/11/26 PHP
Laravel 类和接口注入相关的代码
2019/10/15 PHP
JS获取父节点方法
2009/08/20 Javascript
理解Javascript_06_理解对象的创建过程
2010/10/15 Javascript
jquery简单实现滚动条下拉DIV固定在头部不动
2013/11/25 Javascript
juery框架写的弹窗效果适合新手
2013/11/27 Javascript
初识SmartJS - AOP三剑客
2014/06/08 Javascript
JavaScript实现设计模式中的单例模式的一些技巧总结
2016/05/17 Javascript
jQuery控制div实现随滚动条滚动效果
2016/06/07 Javascript
JS正则RegExp.test()使用注意事项(不具有重复性)
2016/12/28 Javascript
Node.js上传文件功能之服务端如何获取文件上传进度
2018/02/05 Javascript
详解Vue打包优化之code spliting
2018/04/09 Javascript
webpack分离css单独打包的方法
2018/06/12 Javascript
vue主动刷新页面及列表数据删除后的刷新实例
2018/09/16 Javascript
从零到一详聊创建Vue工程及遇到的常见问题
2019/04/25 Javascript
JavaScript表格隔行变色和Tab标签页特效示例【附jQuery版】
2019/07/11 jQuery
jquery图片预览插件实现方法详解
2019/07/18 jQuery
[05:04]完美世界携手游戏风云打造 卡尔工作室地图界面篇
2013/04/23 DOTA
python通过正则查找微博@(at)用户的方法
2015/03/13 Python
Python字符串特性及常用字符串方法的简单笔记
2016/01/04 Python
python验证码识别的实例详解
2016/09/09 Python
python实现的二叉树定义与遍历算法实例
2017/06/30 Python
Python中flatten( )函数及函数用法详解
2018/11/02 Python
在python中实现强制关闭线程的示例
2019/01/22 Python
Flask框架踩坑之ajax跨域请求实现
2019/02/22 Python
python挖矿算力测试程序详解
2019/07/03 Python
关于Numpy数据类型对象(dtype)使用详解
2019/11/27 Python
浅谈keras使用预训练模型vgg16分类,损失和准确度不变
2020/07/02 Python
来自世界上最好大学的在线课程:edX
2018/10/16 全球购物
PHP解析URL是哪个函数?怎么用?
2013/05/09 面试题
销售文员的岗位职责
2013/11/20 职场文书
春节请假条
2014/04/11 职场文书
专科应届毕业生求职信
2014/06/04 职场文书
党员个人剖析材料(四风问题)
2014/10/07 职场文书
《中国机长》观后感:敬畏生命,敬畏职责
2019/11/12 职场文书