【问题标题】:http authentication, php 5.3http认证,php 5.3
【发布时间】:2011-03-08 14:39:37
【问题描述】:

我喜欢这种对一些非关键页面的简单 http 身份验证。

<?php
if (!isset($_SERVER['PHP_AUTH_USER'])) {
  header('WWW-Authenticate: Basic realm="My Realm"');
  header('HTTP/1.0 401 Unauthorized');
  echo 'Text, der gesendet wird, falls der Benutzer auf Abbrechen drückt';
  exit;
} else {
  echo "<p>Hallo {$_SERVER['PHP_AUTH_USER']}.</p>";
  echo "<p>Sie gaben {$_SERVER['PHP_AUTH_PW']} als Passwort ein.</p>";
}
?>

现在我正在尝试使用 php 5.3 在服务器上实现它,但它不起作用。 怎么了?

我输入名称和密码,按回车键,页面再次显示我的对话框。 $_SERVER['PHP_AUTH_USER'] 中没有值。

【问题讨论】:

  • PHP 是否作为 Apache 模块运行?
  • “它不起作用。”没有清楚地描述出了什么问题。
  • 你为什么不输入你的登录名,更新脚本做一个var_dump($_SERVER);exit;,然后按提交?
  • 这是来自php.net/manual/en/features.http-auth.php 的示例代码 - 您还应该阅读大量示例,尤其是涉及 HTTP_AUTHORIZATION 和 REDIRECT_ 变量的示例,它们可以交替设置(取决于 PHP SAPI 和 Apache 配置) .

标签: php http-authentication


【解决方案1】:

我遇到了同样的问题。根据我服务提供商的说法,这是一个旧版本的 php,不适用于 php 5.5 及更高版本。您必须找到更新版本的 php。

【讨论】:

  • (对于反对者来说,这是一个答案。他说可能的解决方案是升级。现在这可能有意义,也可能没有意义,但这是对答案的真正尝试.. . 海事组织。)
  • 我在修改反向代理的 httpd.conf 文件后遇到了同样的问题。
【解决方案2】:

来自 php.net 上的HTTP Authentication with PHP 页面:

从 PHP 4.3.0 开始,为了防止有人写脚本 它显示了通过 a 进行身份验证的页面的密码 传统的外部机制,不会设置 PHP_AUTH 变量 如果为该特定页面启用了外部身份验证,并且 安全模式已启用。无论如何,REMOTE_USER 可以用来识别 外部认证的用户。所以,你可以使用 $_SERVER['REMOTE_USER']。

也许这适用于这种情况。 (刚刚注意到这是一个老问题:)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-01-06
    • 1970-01-01
    • 2016-09-22
    • 2014-06-09
    • 2012-01-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多