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操作文件方法问答
Mar 16 PHP
一道求$b相对于$a的相对路径的php代码
Aug 08 PHP
php中计算未知长度的字符串哪个字符出现的次数最多的代码
Aug 14 PHP
ThinkPHP3.0略缩图不能保存到子目录的解决方法
Sep 30 PHP
基于python发送邮件的乱码问题的解决办法
Apr 25 PHP
PHP中使用smarty生成静态文件的例子
Apr 24 PHP
PHP调用wsdl文件类型的接口代码分享
Nov 19 PHP
php基于双向循环队列实现历史记录的前进后退等功能
Aug 08 PHP
详解PHP的Yii框架中扩展的安装与使用
Apr 01 PHP
php分页查询mysql结果的base64处理方法示例
May 18 PHP
Laravel 将数据表的数据导出,并生成seeds种子文件的方法
Oct 09 PHP
详解Laravel服务容器的绑定与解析
Nov 05 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
使用数据库保存session的方法
2006/10/09 PHP
php 无极分类(递归)实现代码
2010/01/05 PHP
php实现的双向队列类实例
2014/09/24 PHP
Laravel 5 框架入门(三)
2015/04/09 PHP
详解PHP序列化反序列化的方法
2015/10/27 PHP
PHP控制前台弹出对话框的实现方法
2016/08/21 PHP
jquery 插件学习(三)
2012/08/06 Javascript
分享一个我自己写的ToolTip提示插件(附源码)
2013/01/20 Javascript
javascript中encodeURI和decodeURI方法使用介绍
2013/05/06 Javascript
使用jQuery设置disabled属性与移除disabled属性
2014/08/21 Javascript
微信小程序 配置文件详细介绍
2016/12/14 Javascript
微信小程序 转发功能的实现
2017/08/04 Javascript
原生js的ajax和解决跨域的jsonp(实例讲解)
2017/10/16 Javascript
详解webpack3编译兼容IE8的正确姿势
2017/12/21 Javascript
通过 JS 判断页面是否有滚动条的实现方法
2018/04/05 Javascript
JavaScript设计模式之建造者模式实例教程
2018/07/02 Javascript
Vue用v-for给循环标签自身属性添加属性值的方法
2018/10/18 Javascript
webpack是如何实现模块化加载的方法
2019/11/06 Javascript
javascript代码实现简易计算器
2021/01/25 Javascript
浅谈django model postgres的json字段编码问题
2018/01/05 Python
Python 实现毫秒级淘宝抢购脚本的示例代码
2019/09/16 Python
python迭代器常见用法实例分析
2019/11/22 Python
python利用dlib获取人脸的68个landmark
2019/11/27 Python
python opencv 图像边框(填充)添加及图像混合的实现方法(末尾实现类似幻灯片渐变的效果)
2020/03/09 Python
使用matlab 判断两个矩阵是否相等的实例
2020/05/11 Python
Selenium alert 弹窗处理的示例代码
2020/08/06 Python
加拿大最大的钻石商店:Peoples Jewellers
2018/01/01 全球购物
美国最大最全的亚洲购物网站:美国亚米网(Yamibuy)
2020/05/05 全球购物
策划总监岗位职责
2014/02/16 职场文书
2014年图书馆个人工作总结
2014/12/18 职场文书
2015年监理个人工作总结
2015/05/23 职场文书
侵犯商业秘密的律师函
2015/05/27 职场文书
班主任寄语2016
2015/12/04 职场文书
Mysql数据库按时间点恢复实战记录
2021/06/30 MySQL
Python实现列表拼接和去重的三种方式
2021/07/02 Python
Spring boot admin 服务监控利器详解
2022/08/05 Java/Android