【问题标题】:How to pass parameters with `include`?如何使用`include`传递参数?
【发布时间】:2011-10-11 23:13:39
【问题描述】:

我有一个名为 customers.php 的 PHP 脚本,它通过 URL 传递一个参数,例如:

http://www.mysite,com/customers.php?employeeId=1

在我的customers.php 脚本中,我这样选择参数:

$employeeId = $_GET['employeeId'];

效果很好。我还有一个 HTML 文件,其中包含一个输入参数的表单,并运行另一个 php 脚本,即:

<form method="post" action="listcustomers.php">
  Employee ID:&nbsp; <input name="employeeId" type="text"><br>
  <input type="submit" value="Show">
</form>

然后在我的 listcustomers.php 脚本中,我选择了参数:

$employeeId = $_POST['employeeId'];

到目前为止一切顺利。但他是我卡住的地方。我想运行我的customers.php 脚本,并将我在表单中拾取的参数传递给它。我确信这真的很简单,但无法让它发挥作用。我试过了:

include "customers.php?employeeId=$employeeId&password=password";

但这不起作用。我尝试过的其他任何东西也没有。请帮帮我。

【问题讨论】:

标签: php


【解决方案1】:

您不能将查询字符串(类似于 ?x=yyy&vv=www)添加到这样的包含中。幸运的是,您的 include 可以访问它们之前的所有变量,因此如果在您调用之前定义了 $_GET['employeeId']

include 'customers.php';

那么customers.php也可以访问$_GET['employeeId'];

【讨论】:

  • “您不能添加查询字符串...” - 实际上可以,但不推荐:php.net/manual/en/function.include.php#example-128 无论如何,+1 以获得有用的答案
  • 我没有意识到我可以设置 $_GET[] 的元素。我假设它是只读的。
【解决方案2】:

PHP 包含实际上是包含;他们将该位置的一段代码附加到该位置。

PaulPRO 的回答很可能会告诉您想要实现什么,但其他变量也可以在包含的文件中使用。因此,如果您在 index.php 中定义 $foo = "bar"; 并在该行之后包含 layout.php,您可以在该 layout.php 文件中调用此 $foo 变量。

如果你真的想将 URL 传递给文件,你可以将 URL 插入到变量中,并在包含的文件中使用 parse_url 解析它

编辑:是的,我不建议将查询参数添加到实际包含 url,因为它开始与 GET 数组混淆,最终你只会混淆应该有什么并开始把头撞到墙上。

【讨论】:

    【解决方案3】:

    您的包含文件将可以直接访问 GET 变量。

    【讨论】:

      【解决方案4】:

      您也可以使用$GLOBALS 来解决此问题。

       $tit = "Hello";
      
       $GLOBALS["docTitle"] =  $tit;
      
       include ("my.php");
      

      【讨论】:

        【解决方案5】:

        可以通过Session传递值

        喜欢

        <?php
            $_SESSION['name']='peter';
            $_SESSION['age']=28;
            include('person_info.php');
        ?>
        

        在 person_info.php 中,启动会话并将所有会话值放入变量中并取消设置会话。

        【讨论】:

          【解决方案6】:

          这不是很干净,但是如果您需要输入静态参数,这将起作用:

          if (true){
              echo "<meta http-equiv='refresh' content='0;url=query_source.php?random=red%20bull' />";
          }
          else
          {
              echo "<meta http-equiv='refresh' content='0;url=query_source.php?random=blue%20bull' />";
          }
          

          只需将其放在调用 query_source.php 的页面的源代码中即可。

          再一次,它不是很干净......

          【讨论】:

          • 更正使用 $variable 代替 "red%20bull"
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2014-10-23
          • 2011-04-12
          • 2013-08-31
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2022-11-10
          相关资源
          最近更新 更多