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 相关文章推荐
怎么样可以把 phpinfo()屏蔽掉?
Nov 24 PHP
SSI指令
Nov 25 PHP
实现dedecms全站URL静态化改造的代码
Mar 29 PHP
如何提高MYSQL数据库的查询统计速度 select 索引应用
Apr 11 PHP
PHP验证码函数代码(简单实用)
Sep 29 PHP
PHP弹出提示框并跳转到新页面即重定向到新页面
Jan 24 PHP
zf框架的db类select查询器join链表使用示例(zend框架)
Mar 14 PHP
php在线解压ZIP文件的方法
Dec 30 PHP
在html文件中也可以执行php语句的方法
Apr 09 PHP
护卫神php套件 php版本升级方法(php5.5.24)
May 10 PHP
mod_php、FastCGI、PHP-FPM等PHP运行方式对比
Jul 02 PHP
PHP基于DOMDocument解析和生成xml的方法分析
Jul 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
巧用php中的array_filter()函数去掉多维空值的代码分享
2012/09/07 PHP
使用配置类定义Codeigniter全局变量
2014/06/12 PHP
PHP学习笔记(一) 简单了解PHP
2014/08/04 PHP
php curl请求信息和返回信息设置代码实例
2015/04/27 PHP
php实现计算百度地图坐标之间距离的方法
2016/05/05 PHP
jquery实现点击文字可编辑并修改保存至数据库
2014/04/15 Javascript
js仿土豆网带缩略图的焦点图片切换效果实现方法
2015/02/23 Javascript
实例讲解javascript注册事件处理函数
2016/01/09 Javascript
Jquery调用iframe父页面中的元素及方法
2016/08/23 Javascript
bootstrap中使用google prettify让代码高亮的方法
2016/10/21 Javascript
javascript 中模板方法单例的实现方法
2017/10/17 Javascript
jQuery实现菜单的显示和隐藏功能示例
2018/07/24 jQuery
axios向后台传递数组作为参数的方法
2018/08/11 Javascript
Vue实现动态添加或者删除对象和对象数组的操作方法
2018/09/21 Javascript
Vue切换div显示隐藏,多选,单选代码解析
2020/07/14 Javascript
Vue+Element自定义纵向表格表头教程
2020/10/26 Javascript
[01:49]一目了然!DOTA2DotA快捷操作对比第二弹
2014/05/16 DOTA
修复CentOS7升级Python到3.6版本后yum不能正确使用的解决方法
2018/01/26 Python
在Pycharm中设置默认自动换行的方法
2019/01/16 Python
pandas 使用均值填充缺失值列的小技巧分享
2019/07/04 Python
python爬虫项目设置一个中断重连的程序的实现
2019/07/26 Python
python TK库简单应用(实时显示子进程输出)
2019/10/29 Python
python加载自定义词典实例
2019/12/06 Python
python 爬取疫情数据的源码
2020/02/09 Python
世界领先的豪华床上用品供应商之一:Bedeck Home
2019/03/18 全球购物
微软加拿大官方网站:Microsoft Canada
2019/04/28 全球购物
国际贸易专业个人求职信范文分享
2013/12/14 职场文书
程序员求职信
2014/04/16 职场文书
企业挂职心得体会
2014/09/10 职场文书
稽核岗位职责
2015/02/10 职场文书
违纪开除通知书
2015/04/25 职场文书
房产证明范本
2015/06/19 职场文书
2016年精神文明建设先进个人事迹材料
2016/02/29 职场文书
学校运动会开幕词
2016/03/03 职场文书
用Python爬虫破解滑动验证码的案例解析
2021/05/06 Python
php+laravel 扫码二维码签到功能
2021/05/15 PHP