我正试图从另一个php文件a.php加载一个php文件B.php,另外我想通过$_GET发送一个变量。两个文件都存储在同一目录中。我尝试了几种方法:
1)直接写在我的文件上:
require (__FILE__)."b.php?action=1";
执行echo的结果是:C:\examplep\htdocs\pfc\html\a.phpb.php?action=1,太不正确了!
于是我尝试了:
require (__FILE__)."..b.php?action=1"; INCORRECT again
第2)在另一个PHP上我设置:
define('MAINDIR',dirname(__FILE__) . '\');
define('DL_DIR',MAINDIR . 'pfc\html\'); // Also tried with a normal '/'
然后在我的文件上我只做:
require DL_DIR."b.php?action=1"; I also tried with include, but I guess this has nothing to do.
在这种情况下,如果我执行echo,我会得到:C:\examplep\htdocs\pfc\html\b.php,所以正确!
然而,当我运行程序时,我会得到下一个错误:
警告:require(C:\examplep\htdocs\pfc\html\b.php?action=1):无法打开流:在第101行的C:\examplep\tdocs\pfc \html\a.php中没有这样的文件或目录
警告:require():打开'C:\examplep\htdocs\pfc\html\b.php失败?action=1'用于包含(include_path='.;C:\examplep\php\PEAR')在C:\examplep\htdocs\pfc\html\a.php的第101行
很明显,它在文件中找不到文件。所以我再次尝试了"..\"这个版本。。。错了!
3)将realpath添加到等式
require realpath(dirname(__FILE__)."b.php?action=1");
而且,我再次得到:
警告:require():在第101行上的C:\examplep\htdocs\pfc\html\html_menu_supervisor.php中,文件名不能为空
警告:require():无法在第101行的C:\examplep\htdocs\pfc\html\html_menu_supervisor.php中打开"以进行包含(include_path='.;C:\examplep\php\PEAR')
我真的不知道发生了什么事。请有人帮帮我!提前感谢:-)
据我所知,您不能通过require
或include
传递参数。因此,我相信您的require
实际上是在寻找一个不存在的文件(因为您可能没有名为b.php?action=1
.的文件
您可以设置需要的任何变量,并在require
d文件中引用它们(假设它们在同一范围内)。
您不必为include获取参数。
如果你的url看起来像这个
localhost/myfunction.php?action=1
myfunction.php:
require (__DIR__)."..b.php";
您可以包含您的文件,它将开箱即用地获得get变量。
include是一个副本&粘贴包含的文件。
所以你的b.php
应该是这样的:
$allowedGetValues = array(1,2,3,4);
if(isset($_GET['action']) && array_key_exists($_GET['action'],$allowedGetValues) ){
..
}
您必须使用include或require函数,如下所示-
include('b.php');
or
require('b.php');