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 相关文章推荐
mysql下创建字段并设置主键的php代码
May 16 PHP
php 生成文字png图片的代码
Apr 17 PHP
php设计模式  Command(命令模式)
Jun 17 PHP
php 操作符与控制结构
Mar 07 PHP
解析如何在PHP下载文件名中解决乱码的问题
Jun 20 PHP
深入php中var_dump方法的使用详解
Jun 24 PHP
浅析HTTP消息头网页缓存控制以及header常用指令介绍
Jun 28 PHP
Laravel框架表单验证详解
Sep 04 PHP
php动态生成缩略图并输出显示的方法
Apr 20 PHP
codeigniter实现get分页的方法
Jul 10 PHP
php如何控制用户对图片的访问 PHP禁止图片盗链
Mar 25 PHP
php 类中的常量、静态属性、非静态属性的区别
Apr 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实现与erlang的二进制通讯实例解析
2014/07/23 PHP
ThinkPHP里用U方法调用js文件实例
2015/06/18 PHP
php文件缓存方法总结
2016/03/16 PHP
thinkPHP的表达式查询用法详解
2016/09/14 PHP
用javascript获得地址栏参数的两种方法
2006/11/08 Javascript
js去除输入框中所有的空格和禁止输入空格的方法
2014/06/09 Javascript
Javascript模仿淘宝信用评价实例(附源码)
2015/11/26 Javascript
JS实现显示带倒影的图片横排居中放大展示特效实例【测试可用】
2016/08/23 Javascript
jQuery.ajax实现根据不同的Content-Type做出不同的响应
2016/11/03 Javascript
webpack 2.x配置reactjs基本开发环境详解
2017/08/08 Javascript
Vue插件打包与发布的方法示例
2018/08/20 Javascript
vue 表单验证按钮事件交由父组件触发的方法
2018/12/17 Javascript
javascript实现视频弹幕效果(两个版本)
2019/11/28 Javascript
element-ui tooltip修改背景颜色和箭头颜色的实现
2019/12/16 Javascript
JSONP解决JS跨域问题的实现
2020/05/25 Javascript
微信小程序自定义扫码功能界面的实现代码
2020/07/02 Javascript
vue3.0 项目搭建和使用流程
2021/03/04 Vue.js
[03:46]DOTA2英雄基础教程 维萨吉
2013/12/11 DOTA
Python使用htpasswd实现基本认证授权的例子
2014/06/10 Python
Python使用稀疏矩阵节省内存实例
2014/06/27 Python
Python中的lstrip()方法使用简介
2015/05/19 Python
python利用正则表达式搜索单词示例代码
2017/09/24 Python
pandas基于时间序列的固定时间间隔求均值的方法
2019/07/04 Python
使用pymysql查询数据库,把结果保存为列表并获取指定元素下标实例
2020/05/15 Python
爬虫代理的cookie如何生成运行
2020/09/22 Python
python3代码输出嵌套式对象实例详解
2020/12/03 Python
GEOX鞋美国官方网站:意大利会呼吸的鞋
2017/07/12 全球购物
Clearly澳大利亚:购买眼镜、太阳镜和隐形眼镜
2018/04/26 全球购物
美国礼品卡交易网站:Cardpool
2018/08/27 全球购物
this关键字的含义
2015/04/08 面试题
会务接待方案
2014/02/27 职场文书
教师评语大全
2014/04/28 职场文书
三人合伙协议书范本
2014/10/29 职场文书
2014年市场部工作总结
2014/11/25 职场文书
《雪地里的小画家》教学反思
2016/02/16 职场文书
python3 hdf5文件 遍历代码
2021/05/19 Python