Я хочу 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 поддерживается, конечно.