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.MVC的模板标签系统(一)
Sep 05 PHP
php 动态添加记录
Mar 10 PHP
php self,$this,const,static,-&amp;gt;的使用
Oct 22 PHP
fleaphp rolesNameField bug解决方法
Apr 23 PHP
php验证是否是md5编码的简单代码
Apr 01 PHP
ThinkPHP CURD方法之page方法详解
Jun 18 PHP
微信公众平台网页授权获取用户基本信息中授权回调域名设置的变动
Oct 21 PHP
smarty模板引擎中自定义函数的方法
Jan 22 PHP
PHP实现根据时间戳获取周几的方法
Feb 26 PHP
PHP文件及文件夹操作之创建、删除、移动、复制
Jul 13 PHP
php根据年月获取当月天数及日期数组的方法
Nov 30 PHP
php+redis实现注册、删除、编辑、分页、登录、关注等功能示例
Feb 15 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安装ssh2扩展的方法【Linux平台】
2016/07/20 PHP
基于PHP实现短信验证码接口(容联运通讯)
2016/09/06 PHP
PHP使用imagick扩展实现合并图像的方法
2017/04/25 PHP
PHP使用HTML5 FormData对象提交表单操作示例
2019/07/02 PHP
yii框架使用分页的方法分析
2019/07/25 PHP
document.open() 与 document.write()的区别
2007/08/13 Javascript
基于jquery实现的鼠标滑过按钮改变背景图片
2011/07/15 Javascript
JavaScript 产生不重复的随机数三种实现思路
2012/12/13 Javascript
查看图片(前进后退)功能实现js代码
2013/04/24 Javascript
Bootstrap基本组件学习笔记之缩略图(13)
2016/12/08 Javascript
Bootstrap select实现下拉框多选效果
2016/12/23 Javascript
详解Vuex中mapState的具体用法
2017/09/28 Javascript
微信小程序实现获取自己所处位置的经纬度坐标功能示例
2017/11/30 Javascript
详解JavaScript的数据类型以及数据类型的转换
2019/04/20 Javascript
Vue 2.0 中依赖注入 provide/inject组合实战
2019/06/20 Javascript
基于jsbarcode 生成条形码并将生成的条码保存至本地+源码
2020/04/27 Javascript
通过实例解析jQ Ajax操作相关原理
2020/09/23 Javascript
antd form表单数据回显操作
2020/11/02 Javascript
Vue在H5 项目中使用融云进行实时个人单聊通讯
2020/12/14 Vue.js
python实现在pickling的时候压缩的方法
2014/09/25 Python
让 python 命令行也可以自动补全
2014/11/30 Python
python编程实现12306的一个小爬虫实例
2017/12/27 Python
Python判断字符串是否为字母或者数字(浮点数)的多种方法
2018/08/03 Python
python生成器与迭代器详解
2019/01/01 Python
python之mock模块基本使用方法详解
2019/06/27 Python
Pytorch在NLP中的简单应用详解
2020/01/08 Python
Python Tornado实现WEB服务器Socket服务器共存并实现交互的方法
2020/05/26 Python
python中tab键是什么意思
2020/06/18 Python
python中selenium库的基本使用详解
2020/07/31 Python
css3 条纹化和透明化表格Firefox下测试成功
2014/04/15 HTML / CSS
美国内衣第一品牌:Hanes(恒适)
2016/07/29 全球购物
党支部班子“四风”问题自我剖析材料
2014/09/28 职场文书
初中优秀学生评语
2014/12/29 职场文书
写给媳妇的检讨书
2015/05/06 职场文书
《走遍天下书为侣》教学反思
2016/02/22 职场文书
vue代码分块和懒加载非必要资源文件
2022/04/11 Vue.js