Подтвердить что ты не робот

PHP include() с атрибутами GET (include file.php? Q = 1)

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

Ответ 1

Вы не хотите этого делать: вам нужно будет выполнить HTTP-запрос, чтобы иметь возможность передавать параметры GET. PHP script, который вы вызываете таким образом, будет выполняться в отдельном 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);       

Ответ 2

Простое решение - установить значение GET перед включением файла.

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

Ответ 3

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

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

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

Ответ 4

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

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

Ответ 5

Он отлично работает!! Спасибо вам

Задайте переменную перед оператором "include"

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

Ответ 6

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

Ответ 7

Если мне понравилось, чтобы это было постоянно в ссылке "include", это можно сделать с помощью 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 поддерживается, конечно.