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 相关文章推荐
main.php
Dec 09 PHP
用php实现批量查询清除一句话后门的代码
Jan 20 PHP
php中显示数组与对象的实现代码
Apr 18 PHP
php 生成自动创建文件夹并上传文件的示例代码
Mar 07 PHP
PHP中单引号与双引号的区别分析
Aug 19 PHP
PHP调用wsdl文件类型的接口代码分享
Nov 19 PHP
UPUPW 更新 64 位 Apache 系列 PHP 7.0 正式版
Dec 08 PHP
浅谈PHP中的数据传输CURL
Sep 06 PHP
PHP上传Excel文件导入数据到MySQL数据库示例
Oct 25 PHP
php实现异步将远程链接上内容(图片或内容)写到本地的方法
Nov 30 PHP
TP5框架使用QueryList采集框架爬小说操作示例
Mar 26 PHP
php微信小程序解包过程实例详解
Mar 31 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
phpMyAdmin 安装教程全攻略
2007/03/19 PHP
php自动适应范围的分页代码
2008/08/05 PHP
PHP判断远程图片或文件是否存在的实现代码
2014/02/20 PHP
实例简介PHP的一些高级面向对象编程的特性
2015/11/27 PHP
thinkPHP+LayUI 流加载实现功能
2019/09/27 PHP
写出更好的JavaScript之undefined篇(上)
2009/11/22 Javascript
JQuery之拖拽插件实现代码
2011/04/14 Javascript
js Html结构转字符串形式显示代码
2011/11/15 Javascript
Prototype源码浅析 String部分(四)之补充
2012/01/16 Javascript
jquery实现图片随机排列的方法
2015/05/04 Javascript
JSON相关知识汇总
2015/07/03 Javascript
jQuery获取URL请求参数的方法
2015/07/18 Javascript
浅析C/C++,Java,PHP,JavaScript,Json数组、对象赋值时最后一个元素后面是否可以带逗号
2016/03/22 Javascript
使用contextMenu插件实现Bootstrap table弹出右键菜单
2017/02/20 Javascript
js上传图片预览的实现方法
2017/05/09 Javascript
微信小程序 rich-text的使用方法
2017/08/04 Javascript
关于Promise 异步编程的实例讲解
2017/09/01 Javascript
JSON基本语法及与JavaScript的异同实例分析
2019/01/04 Javascript
详细分析Node.js 多进程
2020/06/22 Javascript
Python实现爬取知乎神回复简单爬虫代码分享
2015/01/04 Python
Python中计算三角函数之cos()方法的使用简介
2015/05/15 Python
利用python画一颗心的方法示例
2017/01/31 Python
python中如何使用朴素贝叶斯算法
2017/04/06 Python
matplotlib设置legend图例代码示例
2017/12/19 Python
Python 解决中文写入Excel时抛异常的问题
2018/05/03 Python
python PrettyTable模块的安装与简单应用
2019/01/11 Python
Django框架模板语言实例小结【变量,标签,过滤器,继承,html转义】
2019/05/23 Python
使用 Django Highcharts 实现数据可视化过程解析
2019/07/31 Python
让Django的BooleanField支持字符串形式的输入方式
2020/05/20 Python
高级工程师岗位职责
2013/12/15 职场文书
生日寿宴答谢词
2014/01/19 职场文书
《口技》教学反思
2014/02/21 职场文书
人力资源主管的岗位职责
2014/03/15 职场文书
十佳少年事迹材料
2014/12/25 职场文书
python中 Flask Web 表单的使用方法
2022/05/20 Python
怎么禁用Win11输入法 最新Win11输入法关闭教程
2022/08/05 数码科技