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 相关文章推荐
PHP4引用文件语句的对比
Oct 09 PHP
一步一步学习PHP(2)――PHP类型
Feb 15 PHP
Cakephp 执行主要流程
Mar 24 PHP
array_multisort实现PHP多维数组排序示例讲解
Jan 04 PHP
在php和MySql中计算时间差的方法
Apr 22 PHP
浅析php中jsonp的跨域实例
Jun 21 PHP
php数组去除空值函数分享
Feb 02 PHP
PHP6新特性分析
Mar 03 PHP
Redis构建分布式锁
Mar 28 PHP
Laravel访问出错提示:`Warning: require(/vendor/autoload.php): failed to open stream: No such file or di解决方法
Apr 02 PHP
PHP 实现文件压缩解压操作的方法
Jun 14 PHP
php操作redis数据库常见方法实例总结
Feb 20 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
最省空间的计数器
2006/10/09 PHP
PHP使用redis实现统计缓存mysql压力的方法
2015/11/14 PHP
php根据命令行参数生成配置文件详解
2019/03/15 PHP
JS 参数传递的实际应用代码分析
2009/09/13 Javascript
js调用打印机打印网页字体总是缩小一号的解决方法
2014/01/24 Javascript
node.js中的console.trace方法使用说明
2014/12/09 Javascript
javascript中局部变量和全局变量的区别详解
2015/02/27 Javascript
JavaScript中property和attribute的区别详细介绍
2015/03/03 Javascript
js实现仿Discuz文本框弹出层效果
2015/08/13 Javascript
基于jquery步骤进度条源码分享
2015/11/12 Javascript
jQuery CSS3相结合实现时钟插件
2016/01/08 Javascript
使用node.js中的Buffer类处理二进制数据的方法
2016/11/26 Javascript
js学习总结_选项卡封装(实例讲解)
2017/07/13 Javascript
Angular.js通过自定义指令directive实现滑块滑动效果
2017/10/13 Javascript
JS实现遍历不规则多维数组的方法
2018/03/21 Javascript
跟老齐学Python之私有函数和专有方法
2014/10/24 Python
Python多进程并发(multiprocessing)用法实例详解
2015/06/02 Python
Python找出文件中使用率最高的汉字实例详解
2015/06/03 Python
Python的Asyncore异步Socket模块及实现端口转发的例子
2016/06/14 Python
解决Django数据库makemigrations有变化但是migrate时未变动问题
2018/05/30 Python
python 对txt中每行内容进行批量替换的方法
2018/07/11 Python
Python3数据库操作包pymysql的操作方法
2018/07/16 Python
python读取各种文件数据方法解析
2018/12/29 Python
python实现的登录与提交表单数据功能示例
2019/09/25 Python
CSS3 box-shadow属性实例详解
2020/06/19 HTML / CSS
香港优质食材和美酒专门店:FoodWise
2017/09/01 全球购物
怎样创建、运行java程序
2014/08/01 面试题
实习自我鉴定
2013/12/15 职场文书
推广普通话演讲稿
2014/05/23 职场文书
2015年社区纪检工作总结
2015/04/21 职场文书
敬老院义诊活动总结
2015/05/07 职场文书
新郎新娘致辞
2015/07/31 职场文书
初中同学会致辞
2015/08/01 职场文书
物业保洁员管理制度
2015/08/05 职场文书
如何在C++中调用Python
2021/05/21 Python
解决vue中provide inject的响应式监听
2022/04/19 Vue.js