基于不同的变量执行2个脚本


Executing 2 scripts based on different variables

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

我的问题是这样的:我使用require_once基于trim($row['company']) &与E-mail地址关联的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,我可以有两个示例。php脚本在两个目录执行?谢谢!

不要使用require_once,只使用require(或者include,如果你觉得更好的话)

这看起来不安全

如果没有正确转义,

看起来不安全,因为用户可能会输入任意字符并损坏脚本。(例如,当输入名称"../AnotherUser"时,导致另一个脚本)

答案

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

foreach(glob("/var/www/vhosts/default/htdocs/" . trim($row['company']) . "/Users/*", GLOB_ONLYDIR) as $userDir) {
    require_once($userDir."/example.php");
}

为了做到这一点,您需要从数据库中检索不止一行。所以你会得到一个数组的数组。例如:

$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');
}

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