PHP - 将变量放入 url 时,include() 文件不起作用?

Posted

技术标签:

【中文标题】PHP - 将变量放入 url 时,include() 文件不起作用?【英文标题】:PHP - include() file not working when variables are put in url? 【发布时间】:2012-01-08 05:58:43 【问题描述】:

php 中,我构建了一个网页,该网页使用 include() 来加载网站的某些部分。 但是,我现在遇到了类似问题: 当我使用如下网址时:data-openov-storingen.php?type=actueel 它给了我这个错误:

Warning: include(data-storingen.php?type=actueel): failed to open stream: No such file or directory in blablabla

甚至可以在 include() url 中传递 get 变量吗?

【问题讨论】:

1.如果你阅读了错误,你就会明白你的问题是什么。所以不要bla bla它。 2. 您输入问题的textarea 下方的预览是有原因的:帮助我们帮助您(通过正确格式化您的问题并清晰 我已经为您编辑了问题。下次请正确格式化您的问题。拥有 90 名代表,您会期望一个知道如何编辑问题的人。 @Nacereddine:确实,我确实知道出了什么问题,但这就是我问这个问题的原因。我想了解更多详情。 【参考方案1】:

include 这种方式不获取 URL,它从文件系统获取文件,因此没有查询字符串之类的东西。

不过,您可以这样做:

$_GET['type'] = 'actueel';
include('data-storingen.php');

【讨论】:

这……这也有用吗?所以现在你只是设置 get 变量?哈哈不错:D【参考方案2】:

除非您有一个完全限定的 URL,地址中包含 protocol://,否则 PHP 会将您传递给 include()/require() 的内容解释为 LOCAL 文件,这意味着它正在寻找驱动器上的文件真实姓名为data-storingen.php?type=actueel,而您只有data-storingen.php

由于您处理的是本地文件,因此不支持查询字符串,您必须将其从传递给 include() 的“文件名”中删除。

【讨论】:

【参考方案3】:

include() 函数不通过 HTTP 访问文件,它通过操作系统自己的文件系统访问文件。所以 GET 变量不计算在内。 (因为它们不是文件名的一部分)。

用外行的话来说,包含的目的是将一个文件上的所有内容“复制/粘贴”到另一个文件上,这样您就不会拥有一个巨大的文件,而是一些更小、更易于维护的文件。

【讨论】:

谢谢你的信息,那我重写那段代码,谢谢! 但是,它不像你说的那样复制/粘贴。我知道,因为我有一个双重包含(一个包含的文件,其中包含一个包含)并且双重包含的文件无法访问主文件中的函数...编辑:我的错,它可以访问该函数. 包含的文件被视为函数。它可以从外部(全局)访问变量,但外部,包括文件不能访问内部的变量(很像应用程序不能访问函数作用域的变量)。 嗯? 文件被包含之后,外部文件可以访问内部文件中的所有内容。 哈哈,确实,我真的想对此发表评论,因为这就是我包含文件的全部原因 XD 嗯。我得到了我想要的信息,谢谢大家:)【参考方案4】:

您可以/应该始终将变量设置在外部,因为您无法通过 URL 执行此操作....

$_GET['type'] = "actueel";
include("data-storingen.php");

那么被包含的文件就可以访问变量了(假设你在被包含的文件中使用$_GET['type']

【讨论】:

【参考方案5】:

不,不可能像那样传递变量。不过,您可以在 data-storingen.php 中使用变量 actueel,只要它是在包含它的页面中声明的,在 include 语句之前。

将包含视为将包含文件中的代码复制粘贴到当前文件中。所以你可以有一个文件:

$actueel = 'abc';
include(data-storingen.php);

然后你的data-storingen.php:

echo $actueel;

它会输出'abc'。

【讨论】:

以上是关于PHP - 将变量放入 url 时,include() 文件不起作用?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 include 函数通过 URL 将变量/值传递给另一个 PHP 文件(通过 HTTP)? (PHP)

如何让 Slim 框架工作而无需将 /index.php 放入 URL?

如何将ajax请求放入sencha touch中的变量中?

如何将带引号的php变量放入onclick?

试图通过将 php.ini 放入 wordpress 根目录来打开 allow_url_fopen 不起作用

将多个 PHP 变量放入 Javascript 数组