0

我有一个 Sql 数据库,其中有一个表,其中包含:电子邮件、公司、名称。当我对该数据库进行查询并比较电子邮件地址时,我也会得到trim($row['company'])&trim($row['name'])以便与该电子邮件地址关联的人的公司和姓名也被删除。

我的问题是:我正在使用基于与电子邮件地址关联的trim($row['company'])&的 require_once。trim($row['name'])前任。

require_once "/var/www/vhosts/default/htdocs/" . trim($row['company']) . "/Users/" . trim($row['name']) . "/example.php";

因此,使用上面的示例,然后使用从数据库中获取的公司和名称变量,根据电子邮件将脚本指向位于目录中的 example.php 脚本。

如果我有 2 封电子邮件说每封都来自同一家公司,那么 trim($row['company']) 会保持不变,但是 2 封电子邮件分配给不同的用户,所以 trim($row['name']) 会与众不同。有没有一种方法,当我使用 require_once 时,我可以在两个目录中执行两个 example.php 脚本?谢谢!

4

3 回答 3

0

为此,您需要从数据库中检索多于 1 行。所以你会得到一个数组数组作为你的结果。例如:

$result = array(
   0 => array('email' => 'alex@abc.com', 'name' => 'Alex', 'company' => 'ABC'),
   1 => array('email' => 'beth@xyz.com', 'name' => 'Beth', 'company' => 'XYZ')
);

一旦您像这样检索数据,您将使用以下代码为每个数据运行脚本:

foreach ($result as $row)
{
   require('/var/www/vhosts/default/htdocs/' . trim($row['company']) . '/Users/' . trim($row['name']) . '/example.php');
}

至于如何从您的数据库中检索所有电子邮件的多行,这取决于您的数据库代码,所以如果没有看到您使用的内容,我真的无法提供帮助。

于 2011-05-04T13:41:17.303 回答
0

不要使用 require_once,而只需要(或者如果您感觉更好,可以包含)。

于 2011-05-04T12:43:26.497 回答
0

这看起来不安全

如果您不进行适当的转义,这看起来不安全,因为用户可能输入任意字符并损害您的脚本。(即在输入名称“../AnotherUser”时导致另一个脚本)

答案

但是,是的,您可以通过使用glob枚举特定目录下的所有目录来包含特定公司的所有脚本:

foreach(glob("/var/www/vhosts/default/htdocs/" . trim($row['company']) . "/Users/*", GLOB_ONLYDIR) as $userDir) {
    require_once($userDir."/example.php");
}
于 2011-05-04T12:50:25.587 回答