【问题标题】:Executing 2 scripts based on different variables根据不同的变量执行2个脚本
【发布时间】: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 脚本?谢谢!

【问题讨论】:

    标签: php sql variables require-once


    【解决方案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');
    }
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多