带有GET属性的PHP include()(包括file.php?q = 1)

ano*_*us 21 php get include

我想要include()一个位于我的服务器上的php文件,带有额外的GET属性.但它不会起作用:

include('search.php?q=1');
Run Code Online (Sandbox Code Playgroud)

它给出的错误:

PHP Warning:  include(): Failed opening './search.php?q=1' for inclusion
Run Code Online (Sandbox Code Playgroud)

似乎它试图打开一个名为'search.php?q = 1'的文件而不是打开'search.php'文件并向其发送GET属性.

*请注意,如果我不添加任何GET属性,它确实有效:

include('search.php');
Run Code Online (Sandbox Code Playgroud)

Pek*_*ica 28

您不希望这样做:您必须执行http请求才能传递GET参数.以这种方式调用的PHP脚本将在单独的PHP进程中运行.

最佳方式是在本地包含文件:

include('search.php');
Run Code Online (Sandbox Code Playgroud)

并手动传递任何参数,例如

$q = "1";
include('search.php');  // expects `$q` parameter
Run Code Online (Sandbox Code Playgroud)

或者,更干净地,将您拥有的任何内容search.php放入可以使用参数调用的函数或类中:

include('search.php');  // defines function my_search($q)  
my_search(1);       
Run Code Online (Sandbox Code Playgroud)

  • 或者甚至更好地使用类结构.`包括( '的search.php'); $ search = new Search($ q);` (2认同)

Haz*_*aza 19

简单的解决方法是设置你的GET价值,你包括文件之前.

$_GET['q'] = 1;
include('search.php);
Run Code Online (Sandbox Code Playgroud)

  • 写入GET数组感觉有点脏.但它会奏效 (11认同)