我想include()
位于我服务器上的php文件,还有其他GET属性。
但它不起作用:
include('search.php?q=1');
它给出的错误:
PHP Warning: include(): Failed opening './search.php?q=1' for inclusion
似乎它试图打开一个名为'search.php?q = 1'的文件,而不是打开'search.php'文件并向其发送GET属性。
*请注意,如果我没有添加任何GET属性,它确实有效:
include('search.php');
答案 0 :(得分:28)
您不想这样做:您必须执行http请求才能传递GET参数。以这种方式调用的PHP脚本将在单独的PHP进程中运行。
最佳方式是在本地包含文件:
include('search.php');
并手动传递任何参数,例如
$q = "1";
include('search.php'); // expects `$q` parameter
或更干净地将search.php
中的任何内容放入可以使用参数调用的函数或类中:
include('search.php'); // defines function my_search($q)
my_search(1);
答案 1 :(得分:18)
easy 解决方案是在包含文件之前设置GET值。
$_GET['q'] = 1;
include('search.php);
答案 2 :(得分:2)
实际上,写入$_GET
数组有点脏,没有必要。
您只需在include
语句之前在页面中设置变量:
$q=1;
include("search.php");
这样,$q
变量将在您所包含的页面中显示,并且(显然)可以在任何包含页面中以不同方式设置。
答案 3 :(得分:2)
尝试重写$ _GET变量。
$oldget=$_GET;
$_GET=array('q'=>'1');
include('search.php');
$_GET=$oldget;
答案 4 :(得分:2)
工作正常!!谢谢
在“include”语句
之前设置var$q=1;
include("search.php");
答案 5 :(得分:1)
也许是另一种选择,虽然它有自己的局限性,使用AJAX注入div。最简单的方法是使用jQuery:
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.0/jquery.min.js" type="text/javascript"></script>
<script>$('#box').load('search.php?q=1');</script>
<div ID="box"></div>
答案 6 :(得分:1)
如果像我一样,你需要将它永久保存在'include'链接中,可以使用jQuery完成。
我最近使用的解决方案如下:
首先,声明要由包含文件填充的div的位置:
<div id="imgdiv"> </div>
然后添加一个jQuery调用来填充它,但是用PHP插入你的GET变量:
<script>
window.onload = function(){
$("#imgdiv").load('php/show-img.php?id=<?php echo $i; ?>&name=<?php echo $name; ?>');
}
</script>
希望这足以让它工作,假设当然使用了支持java的浏览器。