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简单开启gzip压缩方法(zlib.output_compression)
Apr 13 PHP
PHP下获取上个月、下个月、本月的日期(strtotime,date)
Feb 02 PHP
PHP使用CURL实现对带有验证码的网站进行模拟登录的方法
Jul 23 PHP
IIS下PHP的三种配置方式对比
Nov 20 PHP
PHP中两个float(浮点数)比较实例分析
Sep 27 PHP
PHP中调用C/C++制作的动态链接库的教程
Mar 10 PHP
thinkPHP2.1自定义标签库的导入方法详解
Jul 20 PHP
PHPExcel导出2003和2007的excel文档功能示例
Jan 04 PHP
thinkphp项目如何自定义微信分享描述内容
Feb 20 PHP
PHP编程获取音频文件时长的方法【基于getid3类】
Apr 20 PHP
PHP大文件分割上传 PHP分片上传
Aug 28 PHP
总结PHP中初始化空数组的最佳方法
Feb 13 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/02/15 PHP
PHP中使用break跳出多重循环代码实例
2015/01/21 PHP
PHP 前加at符合@的作用解析
2015/07/31 PHP
Smarty变量用法详解
2016/05/11 PHP
thinkPHP5.0框架模块设计详解
2017/03/18 PHP
PHP执行linux命令6个函数代码实例
2020/11/24 PHP
jquery实现简单实用的打分程序实例
2015/07/23 Javascript
深入理解JavaScript中的浮点数
2016/05/18 Javascript
vue从使用到源码实现教程详解
2016/09/19 Javascript
js实现微博发布小功能
2017/01/12 Javascript
jQuery 利用ztree实现树形表格的实例代码
2017/09/27 jQuery
vue移动UI框架滑动加载数据的方法
2018/03/12 Javascript
AngularJs的UI组件ui-Bootstrap之Tooltip和Popover
2018/07/13 Javascript
vue 弹框产生的滚动穿透问题的解决
2018/09/21 Javascript
通过Nodejs搭建网站简单实现注册登录流程
2019/06/14 NodeJs
详解如何在vue+element-ui的项目中封装dialog组件
2020/12/11 Vue.js
[51:22]Fnatic vs IG 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
Python中的rjust()方法使用详解
2015/05/19 Python
使用Python3编写抓取网页和只抓网页图片的脚本
2015/08/20 Python
Python实现模拟登录网易邮箱的方法示例
2018/07/05 Python
Django windows使用Apache实现部署流程解析
2020/10/12 Python
日本高岛屋百货购物网站:TAKASHIMAYA
2019/03/24 全球购物
简述安装Slackware Linux系统的过程
2012/05/08 面试题
Ajax和javascript的区别
2013/07/20 面试题
支教自我鉴定
2014/01/18 职场文书
心理学专业大学生职业生涯规划范文
2014/02/19 职场文书
中文专业毕业生自荐信
2014/05/24 职场文书
捐款活动总结
2014/08/27 职场文书
2015年公司工作总结
2015/04/25 职场文书
高中生综合素质评价范文
2015/08/18 职场文书
基于Redis过期事件实现订单超时取消
2021/05/08 Redis
Python实战之疫苗研发情况可视化
2021/05/18 Python
实现一个简单得数据响应系统
2021/11/11 Javascript
基于Python实现对比Exce的工具
2022/04/07 Python
CentOS 7安装mysql5.7使用XtraBackUp备份工具命令详解
2022/04/12 MySQL
提高系统的吞吐量解决数据库重复写入问题
2022/04/23 MySQL