在PHP中,我建立了一个使用include()加载网站部分的网页。然而,我现在遇到了一个问题:当我使用这样的url: 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变量?
include
以这种方式不获取URL,它从文件系统中获取文件,所以没有查询字符串这样的东西。
你可以这样做:
$_GET['type'] = 'actueel';
include('data-storingen.php');
include()
函数不通过HTTP访问文件,而是通过操作系统自带的文件系统访问文件。因此不计算GET变量。(因为它们不是文件名的一部分)。
用外行的话来说,include的意义在于将一个文件上的所有内容"复制/粘贴"到另一个文件上,这样你就不会有一个庞大的文件,而是有几个更小、更易于维护的文件。
除非您有一个完全限定的URL,地址中有protocol://
,否则PHP将把您传递给include()/require()的内容解释为本地文件,这意味着它正在查找驱动器上的文件,其名称实际是data-storingen.php?type=actueel
,而您只有data-storingen.php
。
由于处理的是本地文件,因此不支持查询字符串,因此必须从传递给include()的"filename"中去掉查询字符串
您可以/应该始终在外部设置变量,因为您不能通过URL....
做到这一点$_GET['type'] = "actueel";
include("data-storingen.php");
那么包含的文件可以访问变量(假设您在包含的文件中使用$_GET['type']
)
不,这样传递变量是不可能的。您可以在data-storingen.php
中使用变量actueel
,只要它是在包含它的页面中声明的,在include语句之前。
将包含视为将代码从包含的文件复制粘贴到当前文件中。所以你可以有一个文件:
$actueel = 'abc';
include(data-storingen.php);
然后输入data-storingen.php
:
echo $actueel;
它将输出'abc'