gpt4 book ai didi

php - 使用 PHP 的基本身份验证会导致无限循环

转载 作者:可可西里 更新时间:2023-11-01 12:51:55 26 4
gpt4 key购买 nike

出于某种原因,我无法在我的服务器上使用 PHP 进行基本身份验证。我正在使用手册页中的确切代码:

<?php
if (!isset($_SERVER['PHP_AUTH_USER'])) {
header('WWW-Authenticate: Basic realm="My 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>";
}
?>

但是,当我运行它时,我永远无法超出提示。

如果我将相同的代码放在我的其他服务器上,它可以正常工作。

有谁知道这可能是什么原因造成的?两台服务器都是 WAMP 堆栈,Apache 启用了 auth_basic_module。 PHP.ini 文件实际上也完全相同。

我看了一眼标题,输入用户名/密码后,发送了“授权:基本 XXXXXX”标题。

最佳答案

这取决于使用的 PHP 接口(interface)。环境变量 PHP_AUTH_USER 仅用于 mod_php 并且如果 Apache 有帮助。

如果您从脚本中初始化授权,那么您必须寻找HTTP_AUTHORIZATION header ,并自行解码和拆分它。看看这条评论:http://www.php.net/manual/en/features.http-auth.php#94349

对于 FastCGI 设置或 suexec 调用,您甚至可能没有在环境变量中出现该 header 。作为安全预防措施,它被过滤掉了。常见的解决方法是使用 .htaccess 规则重写 header :

RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

因此它可用于混合大小写,如 $_SERVER["HTTP_Authorization"]

关于php - 使用 PHP 的基本身份验证会导致无限循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4928228/

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