用户验证,以前迷迷糊糊,今天能上网就查了下,其实主要就是一个head的发送
header('WWW-Authenticate: Basic realm="My Realm"'); //使用basic方式(在apache中的模块是 LoadModule auth_basic_module modules/mod_auth_basic.so ,另外还有一种digest验证 #LoadModule auth_digest_module modules/mod_auth_digest.so 不过我没加载这个模块,这个验证方法也一般不用)
header('HTTP/1.0 401 Unauthorized'); //如果验证失败,发送header过去,不发送关系也不大
其中的realm="My Realm" My Realm会在弹出框上显示,可以自己改成,请输入用户名密码
下面输入数据库用户名,密码才能正确验证:
<?php
header("content-type","text/html;charset=utf-8");
if (!isset($_SERVER['PHP_AUTH_USER'])) {
header('WWW-Authenticate: Basic realm="密码"');
header('HTTP/1.0 401 Unauthorized');
echo 'Text to send if user hits Cancel button';
exit;
} else {
//echo "<p>Hello {$_SERVER['PHP_AUTH_USER']}.</p>";
//echo "<p>You entered {$_SERVER['PHP_AUTH_PW']} as your password.</p>";
if(!mysql_connect("127.0.0.1",$_SERVER['PHP_AUTH_USER'],$_SERVER['PHP_AUTH_PW'])){
header('WWW-Authenticate: Basic realm="My Realm"');
header('HTTP/1.0 401 Unauthorized');
echo '你输入用户名或密码错误';
exit;
}
var_dump($_SERVER);
}
?>
************************************************************************************************************
还有另一种用户验证方式,不用写header代码,也不需要数据库。不过.htaccess和.htpasswd两个文件。
首先建立.htpasswd:
进入apache/bin
htpasswd -c E:/.htpasswd root //这里的路径必须是绝对路径,这样可以放到任何地方,用户名自己写
在你想要做验证的目录里面写.htaccess 文件
AuthUserFile F:/test/.htpasswd //验证文件的位置,这样看来验证文件也不一定叫.htpasswd,还可以改名字
AuthName "Enter Password" //弹出对话框提示信息
AuthType Basic //通过Basic方式验证
Require valid-user //允许所有有效用户登录,要限制的话,直接在后面加用户就行了