2009-07-22 103 views
0

请注意,这是一个远程服务器,我无法访问它,只能访问FTP。我想用纯粹的PHP而不是.htaccess来做到这一点。有没有类似于.net的方式,在那里放置web.config文件,并设置谁可以访问它和他们的密码?如何使用PHP保护目录?

+0

用户的凭据是否存储在数据库中的任何位置?或者是否会有所有用户将用于访问目录的通用登录名? – inkedmn 2009-07-22 04:34:49

回答

2

我想说的是,在Apache上,web.config上的这种功能相当于使用.htaccess文件:PHP用于生成页面,但如果您尝试在目录级别工作,则必须检查在PHP甚至被调用之前来到。

在您的PHP脚本中,您可以访问HTTP身份验证的数据;参见$_SERVER,特别是PHP_AUTH_USERPHP_AUTH_PW;但保护将在文件的级别,而不是目录 - 显然,它只会对PHP文件执行(例如,不是在子目录中的映像)。

欲了解更多信息,你可以看一下,比如:HTTP Basic and Digest authentication with PHP

为整个目录做到这一点,正确的方法是用definitly htpasswd的/ .htaccess文件(或者直接在Apache的配置文件中)。

1

为什么使用PHP? .htaccess文件是为此目的而设计的。如果你想做一些事情,比如将用户登录存储在数据库中,请看看Mod_auth_mysql

你可以做的是将文件放在webroot之外,然后编写一个php脚本,以便在传递认证逻辑。

+0

我认为很明显,如果他只有FTP访问服务器,那么他不能安装Apache mod – UnkwnTech 2009-07-22 05:25:40

1

据我所知,没有办法单纯在PHP中完成此操作。

如果你可以使用.htaccess,但不能上传它,那么我会建议通过PHP编写htaccess。

0

目录保护始终是Web服务器的工作。无论您在PHP脚本中做什么,Web服务器都有责任首先执行该脚本。如果您尝试访问目录中的另一个文件,则Web服务器将把它交给用户,甚至无需查看您的脚本。如果用户请求一个目录列表,它是将它交给用户的网络服务器。

如果您想要保护真实的“物理”目录,您必须正确配置网络服务器,最有可能使用.htaccess文件。