简体   繁体   中英

PHP include() with GET attributes (include file.php?q=1)

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');

The error it gives:

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

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.

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

include('search.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 eg

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

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);       

The easy solution is to set your GET value before you include the file.

$_GET['q'] = 1;
include('search.php);

Try rewrite $_GET variable.

$oldget=$_GET;
$_GET=array('q'=>'1');
include('search.php');
$_GET=$oldget;

It works fine!! Thank you

Set the var before the "include" statement

$q=1;
include("search.php");

In effect, writing into the $_GET array is a bit dirty and not necessary. You could simply set a variable in your page before the include statement:

$q=1;
include("search.php");

this way, the $q variable will be visible in your included page and can (obviously) be set differently in any including page.

If like me you needed this to be permanently in the 'include' link it can be done with jQuery.

The solution I used recently was as follows:

First, declare the location of the div to be populated by the included file:

<div id="imgdiv"> </div>

Then add a jQuery call to populate it, but insert your GET variables with PHP:

<script>                
window.onload = function(){     
        $("#imgdiv").load('php/show-img.php?id=<?php echo $i; ?>&name=<?php echo $name; ?>');           
}
</script>

Hopefully that will be sufficient to get it working, assuming a java enabled browser is used of course.

maybe an other option, although it comes with its own limitations, using AJAX-injection into a div.. most simple way to to this is with 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>

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM