我一直在使用PHP,MySQL,Javascript和amp;罗伯特尼克松的CSS第二版(O'Reilly 2012)。我已经设法在我的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服务器。
我确保'localhost'是专门在Firefox上授权的,但仍然没有成功。
欢迎任何建议。
加里
答案 0 :(得分:1)
实测值!我在尝试相同的例子(!)时遇到了同样的问题,并发现当php作为cgi运行时会出现问题。您可以通过调用php_sapi_name()来检测它:如果函数返回'cgi-fcgi'(这似乎是Zend下的默认值),则基本身份验证不起作用。您可以在服务器API(CGI / FastCGI)下的phpInfo中找到相同的信息。
在我的情况下,dev版本有这个问题而实时版本没有(该网站使用Apache 2.0 Handler)。到目前为止,我刚刚添加了一个检查,如果检测到cgi-fgci,我将禁用身份验证(我不需要在localhost上进行身份验证),但我当然希望找到一个可行的替代方案。