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?