包括因某些原因无法工作

时间:2013-02-23 01:57:09

标签: php

在我的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 个答案:

答案 0 :(得分:0)

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

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

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

问题

问题与what $_GET really contains

有关
  

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

你没有通过URL将$matchid传递给脚本......在这种情况下你不应该这样做。

解决方案

但有一种方法。 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(不需要结束标记)。否则,它将被视为文本而不会被执行。

答案 3 :(得分:0)

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

如果您将使用此代码,那么您也可以安全地使用Injects! 我希望你能解释这个。