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 静态变量的初始化
Nov 15 PHP
PHP 中文处理技巧
Apr 25 PHP
PHP 第三节 变量介绍
Apr 28 PHP
smarty内置函数section的用法
Jan 22 PHP
php随机生成数字字母组合的方法
Mar 18 PHP
解读PHP中的垃圾回收机制
Aug 10 PHP
PHP中Closure类的使用方法及详解
Oct 09 PHP
CentOS下与Apache连接的PHP多版本共存方案实现详解
Dec 19 PHP
php socket通信简单实现
Nov 18 PHP
php批量删除操作代码分享
Feb 26 PHP
使用PHP连接数据库_实现用户数据的增删改查的整体操作示例
Sep 01 PHP
Laravel中错误与异常处理的用法示例
Sep 16 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
Zend的AutoLoad机制介绍
2012/09/27 PHP
php检测文件编码的方法示例
2014/04/25 PHP
php 防止表单重复提交两种实现方法
2016/11/03 PHP
Thinkphp 5.0实现微信企业付款到零钱
2018/09/30 PHP
phpmyadmin在宝塔面板里进不去的解决方案
2020/07/06 PHP
Laravel登录失败次数限制的实现方法
2020/08/26 PHP
在JavaScript中监听IME键盘输入事件
2011/05/29 Javascript
Javascript的常规数组和关联数组对比小结
2012/05/24 Javascript
删除select中所有option选项jquery代码
2013/08/12 Javascript
深入理解JavaScript系列(27):设计模式之建造者模式详解
2015/03/03 Javascript
javascript中动态函数用法实例分析
2015/05/14 Javascript
javascript中$(function() {});写与不写有哪些区别
2015/08/10 Javascript
在JavaScript中模拟类(class)及类的继承关系
2016/05/20 Javascript
JavaScript实现打开链接页面的方式汇总
2016/06/02 Javascript
js仿百度切换皮肤功能(html+css)
2016/07/10 Javascript
js实现复选框的全选和取消全选效果
2017/01/03 Javascript
详解axios 全攻略之基本介绍与使用(GET 与 POST)
2017/09/15 Javascript
JavaScript实现焦点进入文本框内关闭输入法的核心代码
2017/09/20 Javascript
基于Vue 实现一个中规中矩loading组件
2019/04/03 Javascript
vue实现滑动到底部加载更多效果
2020/10/27 Javascript
vue 关闭浏览器窗口的时候,清空localStorage的数据示例
2019/11/06 Javascript
Python如何应用cx_Oracle获取oracle中的clob字段问题
2019/08/27 Python
scrapy框架携带cookie访问淘宝购物车功能的实现代码
2020/07/07 Python
总结Pyinstaller的坑及终极解决方法(小结)
2020/09/21 Python
python基于exchange函数发送邮件过程详解
2020/11/06 Python
Ubuntu20下的Django安装的方法步骤
2021/01/24 Python
基于Html5 canvas实现裁剪图片和马赛克功能及又拍云上传图片 功能
2019/07/09 HTML / CSS
青年文明号事迹材料
2014/01/18 职场文书
学习十八大的心得体会
2014/09/12 职场文书
作风建设整改方案
2014/10/27 职场文书
休假证明书
2015/06/24 职场文书
2016年国培心得体会及反思
2016/01/13 职场文书
共青团优秀团员申请书(范文)
2019/08/15 职场文书
Nginx配置并兼容HTTP实现代码解析
2021/03/31 Servers
详细聊聊MySQL中慢SQL优化的方向
2021/08/30 MySQL
SQL注入篇学习之盲注/宽字节注入
2022/03/03 MySQL