0

在我的 php 代码中有一个部分需要从另一个 php 文件中检索。我尝试通过以下方式完成此操作:

include "teams.php?id=".$matchid;

在teams.php中

$matchid = $_GET['id'];
echo "MATCH ID IS ".$matchid;

问题是当我直接打开 teams.php?id=".$matchid 时,它会很好地显示匹配 ID

但是包含不起作用 - 我检查了原始页面的源代码 - 没有插入任何代码。有没有办法做我想做的事?我需要从另一个文件中获取 php 代码,同时将 2 个变量传递到该文件

4

4 回答 4

0

问题

问题与真正包含的内容$_GET有关:

通过 URL 参数传递给当前脚本的变量关联数组。(...)

而且你不会$matchid通过 URL 传递给脚本......在这种情况下你不应该。

解决方案

但是有办法。PHP 不会在文件之间分隔全局变量,因此一个文件中可用的变量也可以在包含的文件中使用:

  • 在文件号 1:

    // Assume $matchid is defined
    include "teams.php";
    
  • 在文件号 2个(包括一个):

    // No need to redefine $matchid - it was defined in the first file
    echo "MATCH ID IS ".$matchid;
    

还要确保<?php在文件的开头添加(不需要结束标签)。否则它将被视为文本而不执行。

于 2013-02-23T02:12:35.053 回答
0

问题是当您调用 include 函数时您没有在浏览器中加载该页面,因此您附加的变量没有被作为 URL 查询参数处理。您实际上只是将teams.php 中的所有内容转储到该位置的另一个文件(包括teams.php 的文件)中。

如果您想有效地将​​某些内容传递给teams.php,那么只需在包含之前声明一个变量。

查看http://php.net/manual/en/function.include.php,一切都会变得清晰。

于 2013-02-23T02:02:58.583 回答
0

这不是 include 的工作方式。当你包含一个文件时,它的代码被执行,就好像它被写在它被包含的同一个文件中一样。所以当包含文件有这个变量时,teams.php 将有变量 $matchid,不需要传递它。还有您调用包含的方式不正确。执行您所做的操作会导致 php 在当前目录中查找名为“teams.php?id=0”的文件(将 0 替换为 $matchid 值)。此文件不存在,“teams.php”存在,而不是 URI。可以通过在 URL 前加上“http://”来指定 URL,但是结果可以与 team.php 中的代码一起使用,因为它希望能够读取 php 源代码。

于 2013-02-23T02:03:50.157 回答
0

你可以这样include "include "teams.php?id={$matchid}";$matchid = filter_input(INPUT_GET, 'id', FILTER_SANITIZE_STRING); echo "MATCH ID IS {$matchid}";

如果您将使用此代码,您也将免受注入!我希望你能理解这一点。

于 2013-02-23T02:17:43.137 回答