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读取IMAP邮件
Oct 09 PHP
队列在编程中的实际应用(php)
Sep 04 PHP
php5.3 注意事项说明
Jul 01 PHP
PHP日期函数date格式化UNIX时间的方法
Mar 19 PHP
php实现转换ubb代码的方法
Jun 18 PHP
php实现zip文件解压操作
Nov 03 PHP
Zend Framework教程之Application和Bootstrap用法详解
Mar 10 PHP
PHP session 会话处理函数
Jun 06 PHP
PHP微信开发之文本自动回复
Jun 23 PHP
PHP getDocNamespaces()函数讲解
Feb 03 PHP
实例介绍PHP删除数组中的重复元素
Mar 03 PHP
laravel实现前后台路由分离的方法
Oct 13 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
浅析php插件 HTMLPurifier HTML解析器
2013/07/01 PHP
判断JavaScript对象是否可用的最正确方法分析
2008/10/03 Javascript
关于js数组去重的问题小结
2014/01/24 Javascript
JS数组(Array)处理函数整理
2014/12/07 Javascript
js中匿名函数的创建与调用方法分析
2014/12/19 Javascript
基于jQuery创建鼠标悬停效果的方法
2015/03/07 Javascript
JQuery中serialize() 序列化
2015/03/13 Javascript
javascript中replace( )方法的使用
2015/04/24 Javascript
JQuery包裹DOM节点的方法
2015/06/11 Javascript
jQuery Ajax 实例代码 ($.ajax、$.post、$.get)
2016/04/29 Javascript
JS 对java返回的json格式的数据处理方法
2016/12/05 Javascript
JS实现图片上传多次上传同一张不生效的处理方法
2018/08/06 Javascript
如何通过shell脚本自动生成vue文件详解
2019/09/10 Javascript
微信小程序实现多选框全选与反全选及购物车中删除选中的商品功能
2019/12/17 Javascript
Vue实现仿iPhone悬浮球的示例代码
2020/03/13 Javascript
RxJS在TypeScript中的简单使用详解
2020/04/13 Javascript
vue实现放大镜效果
2020/09/17 Javascript
[11:42]2018DOTA2国际邀请赛寻真——OG卷土重来
2018/08/17 DOTA
[45:18]完美世界DOTA2联赛循环赛 PXG vs IO 第二场 11.06
2020/11/09 DOTA
python使用rsa加密算法模块模拟新浪微博登录
2014/01/22 Python
按日期打印Python的Tornado框架中的日志的方法
2015/05/02 Python
在Django框架中编写Context处理器的方法
2015/07/20 Python
Python处理命令行参数模块optpars用法实例分析
2018/05/31 Python
Python 实现文件打包、上传与校验的方法
2019/02/13 Python
Python爬虫beautifulsoup4常用的解析方法总结
2019/02/25 Python
python制作图片缩略图
2019/04/30 Python
Python3.9.0 a1安装pygame出错解决全过程(小结)
2021/02/02 Python
解决CSS3 transition-delay 属性默认值0不带单位失效的问题
2020/10/29 HTML / CSS
CSS3选择器新增问题的实现
2021/01/21 HTML / CSS
美国睫毛、眉毛精华液领导品牌:RevitaLash Cosmetics
2018/03/26 全球购物
C#怎么让一个窗口居中显示?
2015/10/20 面试题
创联软件面试题笔试题
2012/10/07 面试题
小学生新学期寄语
2014/01/19 职场文书
三八妇女节超市活动方案
2014/08/18 职场文书
学生穿着不得体检讨书
2014/10/12 职场文书
详解vue身份认证管理和租户管理
2021/05/25 Vue.js