根据不同的变量执行2个脚本

Posted

技术标签:

【中文标题】根据不同的变量执行2个脚本【英文标题】:Executing 2 scripts based on different variables 【发布时间】:2011-08-18 12:23:06 【问题描述】:

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

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

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

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

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

【问题讨论】:

【参考方案1】:

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

【讨论】:

你应该证明这句话是正确的,因为它不会增加任何价值,只是说:do X【参考方案2】:

这看起来不安全

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

答案

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

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

【讨论】:

用户不可能输入另一个用户名。这些数据在他们注册时存储在数据库中,因此一旦他们使用电子邮件、姓名和公司进行注册,他们就不可能访问另一个用户目录。 我拥有的是这个。我有一个脚本正在检查我的收件箱中是否有未读电子邮件。如果有未读的电子邮件,它将查看它来自的电子邮件地址(来自不同的人、不同的公司等),然后从该电子邮件中获取附件并将​​其放置在基于目录的位置在公司名称上,以及与数据库中该电子邮件地址关联的用户名。如果我有来自同一家公司的 2 个不同“用户”的 2 封未读电子邮件,我该如何执行这两个 example.php 脚本? 如果您不验证存储在数据库中的值,则存在安全问题。为什么不能为每封未读邮件执行一次脚本?【参考方案3】:

为此,您需要从数据库中检索多于 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');

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

【讨论】:

以上是关于根据不同的变量执行2个脚本的主要内容,如果未能解决你的问题,请参考以下文章

Linux中执行脚本参数获取

python脚本结合zabbix 监控mongodb

在bash中创建一个循环脚本,其中2个变量递增,第二个变量根据第一个变量[重复]

在 gruntfile 中执行 shell 脚本并将结果分配给变量

如何根据替换字符串在 Oracle Apex 中调整安装脚本?

Shell脚本