这个问题与我问的previous question有关,但这是不同的.
我正在使用htaccess来控制对http://somesite.com/folder的登录.
登录后,我在文件夹/index.php中具有php代码,用于检查用于登录的用户名和密码:$_SERVER [‘PHP_AUTH_USER’]和$_SERVER [‘PHP_AUTH_PW’].我将该信息记录到数据库中.
当用户提供正确的用户名和密码时,此方法有效,但如果输入不正确,则不会发生任何事情-我想是因为从未到达过/index.php.
有没有办法登录也失败的登录尝试?
解决方法:
编辑
有一个简单的方法可以做到这一点.在您的.htaccess中,添加
ErrorDocument 401 /path/to/log.php
登录失败后将调用此log.php(您也可以将其放在受保护的目录之后,即使登录失败也可以访问该目录).请注意,浏览器不知道某些资源是否需要身份验证,因此您总是会在第一次尝试时受到打击.但是,这些尝试将不包括任何用户名,并且您可以通过检查$_SERVER [‘PHP_AUTH_USER’]是否为空来检测它们(很好,您可以将它们与用户未输入用户名的情况区分开来,但是您会明白这一点).
原版的
好吧,不,正如您所说的/index.php永远不会到达.
您可以做的就是完全不依赖Apache,仅使用PHP处理身份验证.这个manual page向您展示了如何.这具有很大的缺点.假设您保护了整个目录.该目录包含PHP文件,图像等.现在,要强制执行身份验证,您必须通过PHP文件路由所有内容.如果只有PHP文件,则可以通过include来实现.如果您拥有静态内容,则必须使用重写规则将其路由到读取和输出静态内容的PHP文件中,这会影响性能.