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项目的方法
Oct 09 PHP
用PHP查询域名状态whois的类
Nov 25 PHP
PHP中输出转义JavaScript代码的实现代码
Apr 22 PHP
php 记录进行累加并显示总时长为秒的结果
Nov 04 PHP
Codeigniter实现处理用户登录验证后的URL跳转
Jun 12 PHP
访问编码后的中文URL返回404错误的解决方法
Aug 20 PHP
PHP冒泡算法详解(递归实现)
Nov 10 PHP
浅谈json_encode用法
Mar 05 PHP
Yii2.0高级框架数据库增删改查的一些操作
Nov 16 PHP
php+ajax无刷新上传图片实例代码
Nov 17 PHP
Laravel5.5 实现后台管理登录的方法(自定义用户表登录)
Sep 30 PHP
PHP+Redis链表解决高并发下商品超卖问题(实现原理及步骤)
Aug 03 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测试硬盘写入速度示例
2014/01/27 PHP
常见php数据文件缓存类汇总
2014/12/05 PHP
ThinkPHP框架整合微信支付之Native 扫码支付模式一图文详解
2019/04/09 PHP
鼠标经过的文本框textbox变色
2009/05/21 Javascript
JavaScript设置IFrame高度自适应(兼容各主流浏览器)
2013/06/05 Javascript
js将json格式内容转换成对象的方法
2013/11/01 Javascript
JavaScript插件化开发教程 (四)
2015/01/27 Javascript
jQuery使用$.ajax进行异步刷新的方法(附demo下载)
2015/12/04 Javascript
js实现页面跳转的五种方法推荐
2016/03/10 Javascript
Vue.js双向绑定实现原理详解
2016/12/22 Javascript
浅谈箭头函数写法在ReactJs中的使用
2017/08/22 Javascript
echarts实现词云自定义形状的示例代码
2019/02/20 Javascript
小程序中this.setData的使用和注意事项
2019/08/28 Javascript
vue 项目打包时样式及背景图片路径找不到的解决方式
2019/11/12 Javascript
JS实现电脑虚拟键盘打字测试
2020/06/24 Javascript
如何更优雅地写python代码
2019/07/02 Python
python求一个字符串的所有排列的实现方法
2020/02/04 Python
python用opencv完成图像分割并进行目标物的提取
2020/05/25 Python
Python实现Keras搭建神经网络训练分类模型教程
2020/06/12 Python
Scrapy项目实战之爬取某社区用户详情
2020/09/17 Python
Python ellipsis 的用法详解
2020/11/20 Python
浅谈Selenium+Webdriver 常用的元素定位方式
2021/01/13 Python
俄罗斯最大的香水和化妆品网上商店:Randewoo
2020/11/05 全球购物
俄罗斯首家面向中国消费者的一站式购物网站:Wruru
2020/05/08 全球购物
实习单位接收函
2014/01/11 职场文书
装饰活动策划方案
2014/02/11 职场文书
行政人事经理职位说明书
2014/03/05 职场文书
竞争与合作演讲稿
2014/05/12 职场文书
产品售后服务承诺书
2014/05/21 职场文书
党建工作经验交流材料
2014/05/25 职场文书
中华魂放飞梦想演讲稿
2014/08/26 职场文书
党校学习个人总结
2015/02/15 职场文书
煤矿安全生产管理协议书
2016/03/22 职场文书
PHP连接MSSQL数据库案例,PHPWAMP多个PHP版本连接SQL Server数据库
2021/04/16 PHP
PostgreSQL自动更新时间戳实例代码
2021/11/27 PostgreSQL
Win10鼠标宏怎么设置?win10系统鼠标宏的设置方法
2022/08/14 数码科技