<?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>";
}
?>
这段代码违背了“if”控制结构工作方式背后的逻辑。但是我在很多代码中都看到了同样的东西,所以出于某种原因它一定是正确的。然而,我的逻辑告诉我并非如此。
当然条件是"!isset($_SERVER['PHP_AUTH_USER']))
检查是否在服务器上设置了这个变量。假设它没有设置。因此,服务器向需要 HTTP 身份验证的客户端发送一个请求,"header('WWW-Authenticate: Basic realm="My Realm"');"
假设我提供了一个正确的请求。在此之后,控制结构以某种方式"if"
跳过了" header('HTTP/1.0 401 Unauthorized');"
和 echo 语句以及控制结构的其余部分。为什么是这样?