gpt4 book ai didi

php - REMOTE_USER 和 PHP_AUTH_USER 有时为空

转载 作者:搜寻专家 更新时间:2023-10-31 20:42:16 32 4
gpt4 key购买 nike

我一直在处理这个应该使用带有 htpasswd 的 HTTP 基本身份验证的站点。身份验证本身就像一个魅力,但有时(并非总是)$_SERVER['PHP_AUTH_USER'] 为空。

我得到了改用 REMOTE_USER 的建议,这也只是偶尔有效。不幸的是,我正在使用 PHP 作为 Apache 的 CGI 插件,其他任何事情都是不可能的。该站点通过 HTTPS 提供 SSL 加密。

为什么会这样?

最佳答案

我没有确切的解决方案,但有几个想法可能会对您有所帮助。

$user = !empty($_SERVER['PHP_AUTH_USER'])
? $_SERVER['PHP_AUTH_USER']
: $_SERVER['REMOTE_USER'];

...是一个好的开始。请记住,如果您不使用 Basic Realm Authentication,则必须使用 Digest Realm Authentication $_SERVER['PHP_AUTH_DIGEST'] .

您应该首先注意不要在正确的位置覆盖和检查您的变量。如果只是有人没有输入用户名,也可能是用户名为空。

如果身份验证不成功,您应该确保发送 Connection: close header 。

现在要调试现象,您应该写入一个日志文件或给自己发送一封包含以下文本的邮件以进一步调查:

// variables from http://php.net/manual/en/language.variables.superglobals.php
$log = var_export(array($_SERVER, $_REQUEST, $_COOKIES, $_SESSION), true);

我还读到,与 cgi 结合使用时,还有其他包含用户名的变量集,请查看此问题/答案:https://stackoverflow.com/a/7792912/1948292

其他可能包含用户信息的变量(取自上面的答案):

$_SERVER['REDIRECT_HTTP_AUTHORIZATION']
$_SERVER['REDIRECT_REMOTE_USER']

关于php - REMOTE_USER 和 PHP_AUTH_USER 有时为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19495552/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com