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

2022-01-25 00:00:00 include get php

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

I want to include() a php file located on my server, with additional GET attributes. But it won't work:

include('search.php?q=1');

它给出的错误:

PHP Warning:  include(): Failed opening './search.php?q=1' for inclusion

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

Seems like it tries to open a file literally named 'search.php?q=1' instead of opening the 'search.php' file and sending it the GET attributes.

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

*Note that it does work if I don't put any GET attributes:

include('search.php');

推荐答案

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

You don't want to do this: You'd have to do a http request to be able to pass GET parameters. A PHP script you call in this way will run in a separate PHP process.

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

The optimal way is to include the file locally:

include('search.php');

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

and to pass any parameters to it manually, like e.g.

$q = "1";
include('search.php');  // expects `$q` parameter

或者,更简洁地,将您在 search.php 中的所有内容放入可以使用参数调用的函数或类中:

or, more cleanly, putting whatever you have in search.php into a function or class that you can call with a parameter:

include('search.php');  // defines function my_search($q)  
my_search(1);       

相关文章