注意,这是一个远程服务器,我无法访问它,只能访问FTP。我想用纯PHP而不是.htaccess来做这件事。有没有类似.net的方法,你放置web.config文件,你设置谁可以访问它和他们的密码?
答案 0 :(得分:2)
我认为Apache上的web.config相当于那种功能,使用.htaccess文件:PHP用于生成页面,但是如果你试图在目录级别工作,那么检查必须来甚至在调用PHP之前。
在PHP脚本中,您可以访问HTTP身份验证的数据;见$_SERVER
,尤其是PHP_AUTH_USER
和PHP_AUTH_PW
;但保护将在文件的级别,而不是目录 - 显然,它将仅对PHP文件(例如,不在子目录中的图像)强制执行。
有关更多信息,您可以查看,例如:HTTP Basic and Digest authentication with PHP
对整个目录执行此操作的正确方法是使用.htpasswd / .htaccess文件(或直接在Apache的配置文件中)。
答案 1 :(得分:1)
为什么要使用PHP? .htaccess文件是为此目的而设计的。如果您尝试在数据库中执行存储用户登录等操作,请查看Mod_auth_mysql
之类的内容您可以做的是将文件放在您的webroot之外,并在传递您的身份验证逻辑后编写一个php脚本来提供这些文件。
答案 2 :(得分:1)
据我所知,纯粹用PHP无法做到这一点。
如果您可以使用.htaccess但无法上传任何原因,那么我建议您通过PHP编写htaccess。
答案 3 :(得分:0)
目录保护始终是Web服务器的工作。无论您在PHP脚本中执行什么操作,首先执行脚本都是Web服务器的责任。如果您尝试访问目录中的另一个文件,Web服务器将把它交给用户,甚至不用查看您的脚本。如果用户请求目录列表,则是将其交给用户的Web服务器。
如果要保护真实的“物理”目录,则必须正确配置网络服务器,最有可能使用.htaccess文件。