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 相关文章推荐
IIS6.0+PHP5.x+MySQL5.x+Zend3.0x+GD+phpMyAdmin2.8x通用安装实例(已经完成)
Dec 06 PHP
php strlen mb_strlen计算中英文混排字符串长度
Jul 10 PHP
php中jpgraph类库的使用介绍
Aug 08 PHP
PHP获取youku视频真实flv文件地址的方法
Dec 23 PHP
PHP用mb_string函数库处理与windows相关中文字符及Win环境下开启PHP Mb_String方法
Nov 11 PHP
什么是OneThink oneThink后台添加插件步骤
Apr 13 PHP
PHPExcel实现表格导出功能示例【带有多个工作sheet】
Jun 13 PHP
PHP两个n位的二进制整数相加问题的解决
Aug 26 PHP
PHP远程连接oracle数据库操作实现方法图文详解
Apr 11 PHP
php实现QQ小程序发送模板消息功能
Sep 18 PHP
php设计模式之迭代器模式实例分析【星际争霸游戏案例】
Apr 07 PHP
深入浅析安装PhpStorm并激活的步骤详解
Sep 17 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
打造计数器DIY三步曲(上)
2006/10/09 PHP
MySQL修改密码方法总结
2008/03/25 PHP
JSON在PHP中的应用介绍
2012/09/08 PHP
浅谈javascript面向对象程序设计
2015/01/21 Javascript
javascript实现博客园页面右下角返回顶部按钮
2015/02/22 Javascript
利用jQuery和CSS将背景图片拉伸
2015/10/16 Javascript
使用Javascript监控前端相关数据的代码
2016/10/27 Javascript
探讨AngularJs中ui.route的简单应用
2016/11/16 Javascript
bootstrap导航栏、下拉菜单、表单的简单应用实例解析
2017/01/06 Javascript
微信小程序 JS动态修改样式的实现代码
2017/02/10 Javascript
jQuery创建及操作xml格式数据示例
2018/05/26 jQuery
JavaScript函数的4种调用方法实例分析
2019/03/05 Javascript
vue 点击其他区域关闭自定义div操作
2020/07/17 Javascript
开源Web应用框架Django图文教程
2017/03/09 Python
python数据结构之链表的实例讲解
2017/07/25 Python
Python基于回溯法子集树模板实现图的遍历功能示例
2017/09/05 Python
Django中Forms的使用代码解析
2018/02/10 Python
Python简单实现的代理服务器端口映射功能示例
2018/04/08 Python
Python实现手写一个类似django的web框架示例
2018/07/20 Python
对python中大文件的导入与导出方法详解
2018/12/28 Python
用sqlalchemy构建Django连接池的实例
2019/08/29 Python
pytorch制作自己的LMDB数据操作示例
2019/12/18 Python
Python 在函数上添加包装器
2020/07/28 Python
如何在windows下安装配置python工具Ulipad
2020/10/27 Python
Selenium关闭INFO:CONSOLE提示的解决
2020/12/07 Python
IE浏览器单独写CSS样式的几种方法
2014/10/14 HTML / CSS
什么是smarty? Smarty的优点是什么?
2013/08/11 面试题
建筑人员岗位职责
2013/12/25 职场文书
领导视察欢迎词
2014/01/15 职场文书
电气自动化专业职业规划范文
2014/02/16 职场文书
读群众路线心得体会
2014/03/07 职场文书
菜篮子工程实施方案
2014/03/08 职场文书
销售主管竞聘书
2014/03/31 职场文书
学校爱国卫生月活动总结
2014/06/25 职场文书
2015年统战工作总结
2015/05/19 职场文书
前端JavaScript大管家 package.json
2021/11/02 Javascript