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程序中防止盗链
Apr 09 PHP
php基础学习之变量的使用
Jun 09 PHP
php从右向左/从左向右截取字符串的实现方法
Nov 28 PHP
Parse正式发布开源PHP SDK
Aug 11 PHP
PHP_SELF,SCRIPT_NAME,REQUEST_URI区别
Dec 24 PHP
使用PHP实现生成HTML静态页面
Nov 18 PHP
php 微信开发获取用户信息如何实现
Dec 13 PHP
PHP jQuery+Ajax结合写批量删除功能
May 19 PHP
PHP实现的最大正向匹配算法示例
Dec 19 PHP
Yii2.0框架实现带分页的多条件搜索功能示例
Feb 20 PHP
PHP通过文件保存和更新信息的方法分析
Sep 12 PHP
PHP重载基础知识回顾
Sep 10 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
手把手教你使用DedeCms的采集的图文教程
2007/03/11 PHP
支持php4、php5的mysql数据库操作类
2008/01/10 PHP
PHP的Laravel框架中使用消息队列queue及异步队列的方法
2016/03/21 PHP
PHP 5.6.11中CURL模块问题的解决方法
2016/08/08 PHP
php 实现银联商务H5支付的示例代码
2019/10/12 PHP
javascript 处理HTML元素必须避免使用的一种方法
2009/07/30 Javascript
同一个表单 根据要求递交到不同页面的实现方法小结
2009/08/05 Javascript
document.getElementById为空或不是对象的解决方法
2010/01/24 Javascript
JavaScript实现页面实时显示当前时间的简单实例
2013/07/20 Javascript
Javascript连接多个数组不用concat来解决
2014/03/24 Javascript
分享一款基于jQuery的视频播放插件
2014/10/09 Javascript
express的中间件bodyParser详解
2014/12/04 Javascript
javaScript数组迭代方法详解
2016/04/14 Javascript
jQuery实现隔行变色的方法分析(对比原生JS)
2016/11/18 Javascript
JQuery页面随滚动条动态加载效果的简单实现(推荐)
2017/02/08 Javascript
Vue官方文档梳理之全局配置
2017/11/22 Javascript
Vue-cli Eslint在vscode里代码自动格式化的方法
2018/02/23 Javascript
vue 父组件调用子组件方法及事件
2018/03/29 Javascript
js的各种数据类型判断的介绍
2019/01/19 Javascript
p5.js绘制创意自画像
2019/11/04 Javascript
javascript实现简易的计算器
2020/01/17 Javascript
[09:47]2018DOTA2亚洲邀请赛4.5SOLO赛 No[o]ne vs Sumail
2018/04/06 DOTA
Python使用jsonpath-rw模块处理Json对象操作示例
2018/07/31 Python
python如何生成各种随机分布图
2018/08/27 Python
django使用admin站点上传图片的实例
2019/07/28 Python
opencv python Canny边缘提取实现过程解析
2020/02/03 Python
猫途鹰:全球领先的旅游点评社区
2017/04/07 全球购物
诗普兰迪官方网站:Splendid
2018/09/18 全球购物
大专计算机个人求职的自我评价
2013/10/21 职场文书
详细的大学生创业计划书模板
2014/01/27 职场文书
硕士研究生求职自荐信范文
2014/03/11 职场文书
班长竞选演讲稿
2014/04/24 职场文书
2014年宣传部个人工作总结
2014/12/06 职场文书
项目建议书
2015/02/04 职场文书
总经理检讨书范文
2015/02/16 职场文书
html css3不拉伸图片显示效果
2021/06/07 HTML / CSS