如何将类似登录功能设计为使用 suPHP 的文件权限。例如,如果我有一个网站,www.example.com以下两个用户有自己的主目录,每个用户都有一个 php script test.php,以及一个validateUser.php属于目录中另一个用户(root、www-data、apache ...)的脚本/home。
/家/
├── 验证用户.php
├── 用户1
│ └── test.php
└── 用户2
└── test.php
user1可以user2's通过访问来访问脚本www.example.com/user2/test.php,反之亦然。相反,我想要的是使用mod_rewrite 之类的东西将所有传入请求引导到validateUser.php. 但是,这样做会导致以所有者身份执行所有脚本validateUser.php,而不是目标test.php脚本。
无论如何在 suPHP 启动之前调用 php 脚本,然后允许 suPHP 继续,或完全中止。
编辑这是我提出的第二个赏金。我第一次给古斯塔夫 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
自然,我只是将副本移动validateUser.php到每个用户的目录中。问题是现在用户可以删除该文件并将他们想要的任何内容放在那里,就像根本不需要登录一样。解决此问题的一种方法是使主文件夹具有粘性(我不建议对主文件夹执行此操作)并使其validateUser.php归根目录所有。但现在它会以 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
然后使用 mod_rewrite 将用户的所有流量重定向到www.admin.example.com/validateUser.php,如果用户已登录(或登录成功),则用户将被重定向回他们最初尝试登录的站点。这样做的好处是,如果可能的话,suPHP 不会启动,直到用户被引导回他们自己的虚拟主机。