0

我一直在研究 Robert Nixon(O'Reilly 2012)的 PHP、MySQL、Javascript 和 CSS 第 2 版。我已经设法在我的 WAMP 服务器(Zend 服务器)上建立了一个数据库。

然后,本书展示了如何验证用户名和密码。我设法创建了一些带有密码的用户名,这些用户名已成功添加到我的数据库中。我知道,因为我连接到数据库,读取 SELECT 查询的结果并将它们回显到浏览器。

然后,当我尝试在此处使用身份验证登录时:

if (isset($_SERVER['PHP_AUTH_USER']) && isset($_SERVER['PHP_AUTH_PW'])) {....perform database query and compare username/password....}

我的用户名和密码都不起作用。在 Firefox 和 IE 中再次弹出“需要身份验证”窗口。PHP 代码没有通过 if 语句(我尝试在 if 语句之前和之后立即将输出发送到浏览器),因此输入的用户名和密码似乎没有传递给 PHP 服务器。

我确保在 Firefox 上专门授权了“localhost”,但仍然没有成功。

欢迎大家提出意见。

加里

4

1 回答 1

1

成立!我在尝试相同的示例(!)时遇到了同样的问题,并发现当 php 作为 cgi 运行时会出现问题。您可以通过调用 php_sapi_name() 来检测它:如果函数返回 'cgi-fcgi'(这似乎是 Zend 下的默认值),则基本身份验证不起作用。您可以在服务器 API (CGI/FastCGI) 下的 phpInfo 中找到相同的信息。

在我的情况下,开发版本也有这个问题,而实际版本没有(网站使用 Apache 2.0 处理程序)。到目前为止,我刚刚添加了一个检查,如果检测到 cgi-fgci 则禁用身份验证(我不需要在 localhost 上进行身份验证),但我当然想找到一个可行的替代方案。

于 2012-12-26T23:26:10.340 回答