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');
Ответы
Ответ 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 поддерживается, конечно.