Header函数和PHP_AUTH_USER做用户验证

php Header PHP_AUTH_USER PHP_AUTH_PW 用户验证

在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‘]

获取到用户提交上来的用户名和密码之后,要怎样处理逻辑就跟我们一般的程序处理没有什么区别了。下面提供两个例程供参考:

<?

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:[email protected]">[email protected]</a>.

</blockquote>

<?

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:[email protected]">[email protected]</a>.

</blockquote>

<?

exit;

}

$name=mysql_result($query,0,"name");

$email=mysql_result($query,0,"email");

mysql_free_result($query);

}

?>

来源页面:http://www.weberdev.com/get_example-82.html

另外一个参考的例程:

<?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!‘;

}

?>

时间: 2024-08-02 16:16:14

Header函数和PHP_AUTH_USER做用户验证的相关文章

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 header函数的详解

header函数在php中是发送一些头部信息的, 我们可以直接使用它来做301跳转等,下面我来总结关于header函数用法与一些常用见问题解决方法. 发送一个原始 HTTP 标头[Http Header]到客户端.标头 (header) 是服务器以 HTTP 协义传 HTML 资料到浏览器前所送出的字串,在标头与 HTML 文件之间尚需空一行分隔. 1.重定向. Header("Location: http://blog.anepx.com"); exit; //在每个重定向之后都必须

PHP header函数的几大作用

先看看官方文档的定义 (PHP 4, PHP 5, PHP 7) header - 发送原生 HTTP 头 1 void header ( string $string [, bool $replace = true [, int $http_response_code ]] ) 参数: string 有两种特别的头.第一种以"HTTP/"开头的 (case is not significant),将会被用来计算出将要发送的HTTP状态码. 例如在 Apache 服务器上用 PHP 脚

springmvc 拦截器与用户验证token

1:springmvc 配置文件中添加拦截器,当然首先要有拦截后交给哪个类处理也要写上 <mvc:interceptors> <mvc:interceptor> <mvc:mapping path="/**"/> <bean class="com.kad.authorization.AuthorizationInterceptor" /> </mvc:interceptor> </mvc:interc

以函数返回值做参数时,函数调用的顺序

环境:vs2013 在下面的代码中 1 //类似于下面的代码 2 3 foo(char*,char*,char*); 4 5 char* str ="A#B#C"; 6 7 foo(strtok(str,"#"),strtok(NULL,"#"),strtok(NULL,"#")); 预计让函数foo得到("A","B","C")的参数,程序编译的时候没问题,但是运行

MVC WebApi 用户验证 (2)

构建ASP.NET MVC5+EF6+EasyUI 1.4.3+Unity4.x注入的后台管理系统(66)-MVC WebApi 用户验证 (2) 前言: 构建ASP.NET MVC5+EF6+EasyUI 1.4.3+Unity4.x注入的后台管理系统(65)-MVC WebApi 用户验证 (1) 回顾上一节,我们利用webapi简单的登录并进行了同域访问与跨域访问来获得Token,您可以跳转到上一节下载代码来一起动手. 继续上一篇的文章,我们接下来演示利用拿到的Token来访问接口,管理接

如何调用sklearn模块做交叉验证

终于搞明白了如何用sklearn做交叉验证!!! 一般在建立完模型之后,我们要预测模型的好坏,为了试验的可靠性(排除一次测试的偶然性)我们要进行多次测试验证,这时就要用交叉验证. sklearn中的sklearn.cross_validation.cross_val_score函数已经帮我们做好了. 直接调用就可以了. 无论是做回归还是做分类,都可以用这个函数. 具体用法: from sklearn.cross_validation import cross_val_score metric =

一盘很大的棋:Android Wear要做用户唯一的收件箱

在今年的Google I/O 2014上,Google用一组数据告诉了我们:"安卓月活跃用户达 10 亿,用户每天点亮.解锁手机 1000 亿次". 这么算下来,一个合格的安卓用户每天都要解锁100此次呀.亲,你及格了么?三分钟一次信息提醒,五分钟两次消息推送,一个强迫症怎么可能经受的住这种折磨呢?总有收到新消息的错觉,总有遗漏信息的幻觉,无数次的点亮.解锁手机就成了必修课. Google已经看到了智能手机时代的上述问题,不会让这样的问题再延续到智能手表上,想要借助新的工具和战场,真正

关于finfo_file函数获取文件mime值验证出错的问题

今天在做图片上传 验证图片mime值时 突然发现  个别特殊情况下finfo_file 获取的MIME值不能直接使用, 按照官方的写法是 $finfo=finfo_open(FILEINFO_MIME); $mime=finfo_file($finfo,$file_path); finfo_close($finfo); alert($mime); 这样子获得文件mime类型的 但是今天发现这样子不行,在文件传输中如果有charset设置传输类型为二进制流的话, 就会出现类似如下图那样: 可以明显