apache用户验证

用户验证,以前迷迷糊糊,今天能上网就查了下,其实主要就是一个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                                                 //允许所有有效用户登录,要限制的话,直接在后面加用户就行了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值