【转】PHP 页面访问控制的3种方法

转载请注明
作者:海底苍鹰
地址:http://blog.51yip.com/apachenginx/1051.html

 

我们经常会看到这种现象,看下图

apache 页面访问控制

apache 页面访问控制

为什么要进行这样的控制呢,给不同的人看不同的东西,对信息进行保护,虽然这种保护比较低级,多多少少还是有点用的。

一,用htpasswd命令,产生权限控制文件

查看复制打印?

  1. [zhangy@BlackGhost test]$ htpasswd -c ./access tank  //生成一个密码文件 ,-c是新建一个文件  htpasswd -h可查看
  2. New password:            //提示输入密码
  3. Re-type new password:        //重复密码
  4. Adding password for user tank 
  5. [zhangy@BlackGhost test]$ cat access    //查看一下密码文件
  6. tank:Uj5B3qIF/BNdI      //用户名是明文的,密码是加密的。

到这儿密码文件是生成好了。

二,页面访问控制方法

1,能过修改httpd.conf或者是httpd-vhosts.conf来进行配置

查看复制打印?

  1. listen 10004 
  2. NameVirtualHost *:10004 
  3. <VirtualHost *:10004> 
  4. DocumentRoot "/home/zhangy/www/test"
  5. ServerName *:10004 
  6. BandwidthModule On 
  7. ForceBandWidthModule On 
  8. Bandwidth all 1024000 
  9. MinBandwidth all 50000 
  10. LargeFileLimit * 500 50000 
  11. MaxConnection all 2 
  12. ErrorLog "/home/zhangy/apache/blog.51yip.com.com-error.log"
  13. CustomLog "/home/zhangy/apache/blog.51yip.com-access.log" common 
  14. //看一下,下面的配置
  15. <Directory /home/zhangy/www/test> 
  16. AuthType Basic 
  17. AuthName "access test"
  18. AuthUserFile /home/zhangy/www/test/access 
  19. Require valid-user 
  20. </Directory> 
  21. </VirtualHost> 

2,我们可以利用.htaccess文件来进行控制

在test的根目录下面建一个.htaccess的文件

查看复制打印?

  1. [zhangy@BlackGhost test]$ vi .htaccess   //打开个文件 ,添加权限内容
  2. [zhangy@BlackGhost test]$ cat .htaccess  //下面就是.htaccess的内容
  3. AuthType Basic 
  4. AuthName "access test"
  5. AuthUserFile /home/zhangy/www/test/access 
  6. Require valid-user 

如果要给很多人设置不同的用户名和密码,使用AuthGroupFile设置选项比较方便

3,不用密码文件,也可以进行访问控制

查看复制打印?

  1. define('ADMIN_USERNAME','tank');     // Admin Username
  2. define('ADMIN_PASSWORD','tank');      // Admin Password
  3. //log check
  4. if (!isset($_SERVER['PHP_AUTH_USER']) || !isset($_SERVER['PHP_AUTH_PW']) || 
  5. $_SERVER['PHP_AUTH_USER'] != ADMIN_USERNAME ||$_SERVER['PHP_AUTH_PW'] != ADMIN_PASSWORD) { 
  6. Header("WWW-Authenticate: Basic realm=\"access test\""); 
  7. Header("HTTP/1.0 401 Unauthorized"); 
  8. echo <<<EOB 
  9. <html><body> 
  10. <h1>Rejected!</h1> 
  11. <big>Wrong Username or Password!</big> 
  12. </body></html> 
  13. EOB; 
  14. exit; 

上面用的是php的方法,其他语言我想也有。您可以把上面的这段代码写成一个文件,进行共用包涵,也可以把它封装到底基,这样不管访问什么页面,都可以进行访问控制。

 

PS:

.htaccess文件需要主配置的配合,如果有冲突就不行

PHP_AUTH_USER方式也不靠谱,因为有些cgi环境就不行,详见http://php.net/manual/en/features.http-auth.php

我的fastcgi环境就得不到用户的输入,HTTP_AUTHORIZATION也得不到。


Total views.

© 2013 - 2024. All rights reserved.

Powered by Hydejack v6.6.1