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

Вы не хотите этого делать: вам нужно будет выполнить 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); в include('search.php'); // defines function my_search($q) my_search(1); 

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

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

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

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

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

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

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

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

Установите var перед оператором "include"

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

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

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