PHP include () с атрибутами GET (include file.php? Q = 1) - PullRequest
21 голосов
/ 15 апреля 2011

Я хочу 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');

Ответы [ 7 ]

28 голосов
/ 15 апреля 2011

Вы не хотите делать это: вам нужно будет выполнить 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);       
18 голосов
/ 15 апреля 2011

Решение easy состоит в том, чтобы установить значение GET до включения файла.

$_GET['q'] = 1;
include('search.php);
2 голосов
/ 23 апреля 2013

Работает отлично !! Спасибо

Установить переменную перед оператором "include"

$q=1;
include("search.php");
2 голосов
/ 22 июня 2012

Попробуйте переписать переменную $ _GET.

$oldget=$_GET;
$_GET=array('q'=>'1');
include('search.php');
$_GET=$oldget;
2 голосов
/ 22 февраля 2012

В действительности запись в массив $_GET немного грязная и не обязательна.Вы можете просто установить переменную на своей странице перед оператором include:

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

, таким образом, переменная $q будет видна на вашей включенной странице и может (очевидно) быть установлена ​​по-другому в любомвключая страницу.

1 голос
/ 22 июня 2012

Если вам, как и мне, нужно, чтобы это было постоянно в ссылке «включить», это можно сделать с помощью jQuery.

Решение, которое я недавно использовал, было следующим:

Сначала объявите местоположение div, который будет заполнен включенным файлом:

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

Затем добавьте вызов jQuery, чтобы заполнить его, но вставьте переменные GET с помощью PHP:

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

Надеюсь, этого будет достаточно, чтобы он заработал, при условии, что, конечно, используется браузер с поддержкой Java.

1 голос
/ 31 января 2012

может быть другой вариант, хотя он имеет свои ограничения, используя 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>
...