与suPHP一起实现登录

puk*_*puk 7 php permissions login suphp

如何将登录类似功能设计为使用suPHP的文件权限.例如,如果我有一个网站www.example.com和以下两个用户拥有自己的主目录,每个用户都有一个php脚本test.php,并且该validateUser.php脚本属于目录中的另一个用户(root,www-data,apache ...)/home.

/home/
??? validateUser.php
??? user1
?   ??? test.php
??? user2
    ??? test.php

user1可以user2's通过访问访问脚本www.example.com/user2/test.php,反之亦然.相反,我想要的,是渠道的所有传入的请求,使用类似mod_rewrite的,对validateUser.php.但是,这样做会导致执行所有脚本作为validateUser.php目标test.php脚本的所有者,而不是目标脚本.

无论如何在suPHP启动之前调用php脚本,然后允许suPHP继续,或完全中止.


编辑这是我提出的第二个赏金.我给Gustav的第一个b/c他给出了一个很好的部分答案.我会提到我到目前为止所尝试的内容,以及为什么它们都不适合我.

1)我尝试使用mod_rewrite将URL重定向validateUser.php到登录用户,或者调用他们想要调用的任何脚本.问题是,我已经把我的虚拟主机,使得每个用户都有自己的虚拟站点(即www.user1.example.com,www.user2.example.com......如果这是一个不好的设计方法,随意粗暴地指出来).因此,虽然OS看到如上所述的文件结构,但在线,根目录也是这样设置的

VirtualHost = www.user1.example.com
??? validateUser.php
??? test.php
VirtualHost = www.user2.example.com
??? validateUser.php
??? test.php
Run Code Online (Sandbox Code Playgroud)

当然,我只是将一份副本移动validateUser.php到每个用户的目录中.问题是现在用户可以删除该文件并在其中放置他们想要的任何内容,就像根本不需要登录一样.解决这个问题的方法是使主文件夹变粘(不是我建议对主文件夹执行的操作)并使validateUser.phproot拥有.但现在它将执行AS root,因为这是suPHP.这就是我放弃的地方.

2)我可以使用古斯塔夫的mod_auth建议,但我不喜欢它预先要求密码(如旧学校网站).

3)我已经考虑了1)的变体,如果我可以在虚拟主机之间重定向.例如,像这样重构虚拟主机

VirtualHost = www.user1.example.com
??? test.php
VirtualHost = www.user2.example.com
??? test.php
VirtualHost = www.admin.example.com
??? validateUser.php
Run Code Online (Sandbox Code Playgroud)

然后使用mod_rewrite将用户的所有流量重定向到www.admin.example.com/validateUser.php,如果用户已登录(或登录成功),用户将被重定向回他们最初尝试登录的站点.如果可能的话,这样做的好处是,在用户被引导回他们自己的虚拟主机之前,suPHP不会启动.

Gus*_*ram 2

您是否考虑过使用mod_auth来实现用户身份验证?如果您决定尝试一下,这里有一个指南可能对您有用。

Apache 2.2 的等效项:

请注意,浏览器会存储凭据,并在您发出的每个请求的标头中发送它们。