【问题标题】:Passwordprotecting a Single PHP file with Apache2 or PHP independantly from anything else使用 Apache2 和 PHP 单独保护单个 PHP 文件的密码
【发布时间】:2011-04-11 03:14:21
【问题描述】:

亲爱的, 文件夹内images 我想用密码保护单个 php 文件 render.php 我的 .htaccess 和 .htpasswd 文件已经在该文件夹中,但是它们不起作用

.htaccess 在文件夹 /images

// does not work ??
<Files render.php>
  AuthName "Login"
  AuthType Basic
  AuthUserFile /var/www/vhosts/site.com/httpdocs/images/.htpasswd
  require valid-user
</FilesMatch>

.htpasswd

admin:818jp2uNLY6ZW     
# generated with http://www.4webhelp.net/us/password.php

我在该文件夹的 htaccess 中设置规则后,该文件夹中的所有内容似乎都得到了奇怪的处理,该文件夹中的 css 文件被损坏等等。为什么这不起作用?

PS 我也完全没问题(事实上,如果可能的话,我更愿意在 php 文件本身中使用密码设置,这样我就可以确保除了该 php 文件之外没有其他任何东西受到影响,无论其名称或位置(可能更优雅和时代)虽然我看到每个人都使用 htaccess 所以那里一定有优势,对吧?

非常感谢您的建议!

【问题讨论】:

  • 您以&lt;Files&gt; 开头,但以&lt;FilesMatch&gt; 结尾。我很惊讶这不会引发 500 个错误
  • @Phil Brown 我猜这就是正在发生的事情,他所说的损坏意味着没有加载到页面中......
  • 您是否启用了适当的覆盖以允许 .htaccess 文件中的 auth 指令?你至少需要AllowOverride AuthConfig
  • @Phil @Jacob @Marc 感谢所有 +1 对所有 cmets!这三个都是真的。我应该使用Files 还是FilesMatch?在顶部和底部标签中匹配我选择的单个 php 文件?谢谢。我还对下面唯一的“答案”做出了反应,因为我也喜欢那个(尽管该解决方案还不起作用)我本月最幸运的编码日!
  • 我只使用文件,虽然我不完全确定 Auth 模块指令在那里有效。

标签: php apache .htaccess apache2 .htpasswd


【解决方案1】:

您可以在 PHP as shown in the manual 中执行此身份验证:

<?php
if (!isset($_SERVER['PHP_AUTH_USER']) || $_SERVER['PHP_AUTH_USER'] != 'admin' || $_SERVER['PHP_AUTH_PW'] != 'foobar') {
    header('WWW-Authenticate: Basic realm="My Realm"');
    header('HTTP/1.0 401 Unauthorized');
    echo 'Unauthorized';
    exit;
}

【讨论】:

  • +1 感谢@Long Ears,我认为这确实是我需要的!当我将此代码放在我的 php 文件顶部时,它确实会通过弹出屏幕很好地要求输入密码。但是,当我输入admin 和foobar 作为登录凭据时,相同的登录屏幕会返回空字段并再次要求我输入登录名/密码。经过三个左右的尝试后,它说 UNAUTHORISED.... 任何猜测?谢谢:非常感谢
  • @Sam 如果您通过 CGI 运行 PHP 而不是作为 Apache 模块运行,那么这将无法单独运行,这是一个修复,besthostratings.com/articles/http-auth-php-cgi.html
猜你喜欢
  • 2012-11-14
  • 2018-09-15
  • 1970-01-01
  • 2013-01-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-09
  • 1970-01-01
相关资源
最近更新 更多