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

Как передать переменную через функцию require() или include() php?

когда я использую это:

require("diggstyle_code.php?page=$page_no");

предупреждение: не удалось открыть поток: нет ошибки в C:\xampp\htdocs\4ajax\gallery_core.php в строке 198

и ошибка:

Failed opening required 'diggstyle_code.php?page=1' (include_path='.;C:\xampp\php\PEAR') in C:\xampp\htdocs\4ajax\gallery_core.php on line 198

значение переменной $page_no собирается заранее.

Но если я опускаю '?page=$page_no part' из аргумента функции require, то не отображается ошибка или предупреждение.

Мне нужно передать переменную, когда я использую функцию require().

4b9b3361

Ответ 1

require() и include() откроет файл, соответствующий получаемому пути/имени.

Это означает, что с вашим кодом у вас должен быть файл с именем diggstyle_code.php?page=1 на вашем диске. Это явно не так, поэтому он терпит неудачу.

Указание страницы переменной в руководстве PHP:

Объем переменной - это контекст, в котором он определен. По большей части все переменные PHP имеют только одну область. В эту единую область охвата включены и требуемые файлы.

В вашем случае вам не нужно передавать переменную. Если у вас есть переменная в текущем script, она также будет существовать в script, которую вы включаете, вне функций, у которых есть свой собственный объем.

В главном script, вы должны иметь:

$page_no = 10;
require 'diggstyle_code.php';

И в diggstyle_code.php:

echo $page_no;
// Or work with $page_no the way you have to

Помните, что включение/требование файла в точности совпадает с копированием в его содержимое в нужную ему строку.

Ответ 2

это должно работать, но это довольно грязный взлом:

$_GET['page'] = $page_no;
require('diggstyle_code.php');

вы, вероятно, захотите реорганизовать свой код для использования функций и/или объектов и вызывать их из своих файлов вместо их включения (предупреждение о спагетти)

Ответ 3

require не вытаскивает файл с веб-сервера - вместо этого он должен ссылаться на файл в файловой системе.

Вызов include или require просто говорит PHP вставлять содержимое данного файла в ваш код в этом месте, не более того.

Ответ 4

require() не выполняет HTTP-вызов. Все, что он делает - это открыть файл с диска и включить код в позицию вызова. Таким образом, достаточно простых локальных переменных.

Ответ 5

Если ваша переменная глобальна, нет необходимости "передавать" ее, она уже есть: Область переменных PHP.

Тогда ответ будет, не делайте ничего, если $page_no существует в файле, который вы вызываете require(), он будет доступен во включенном файле.

Ответ 6

require, require_once, include и include_once попытаться включить файлы из файловой системы в текущий файл.

Поскольку нет файлов с именем diggstyle_code.php? page = 1, вполне логично, что PHP не может найти его.

Вы не можете передавать значения таким образом, однако любая переменная, объявленная в текущем файле, будет доступна во входящих файлах.

Ответ 7

У меня была эта проблема, и я заметил, что если вы используете http://в своем URL-адресе, то это не работает.

Ответ 8

Если я правильно понял, вам нужно вызвать файл diggstyle_code.php, передающий аргумент, чтобы никто не мог вызвать этот файл и заставить его работать, а не ваш основной файл. Я прав?

Таким образом, предположим, что ваш "main.php" имеет строки

require("diggstyle_code.php?page=$page_no");

это означает, что: если кто-то называет "main.php", запускается diggstyle_code.php. Но если кто-либо каким-либо образом называет напрямую diggstyle_code.php, он/она ничего не получает.

Если я правильно понимаю, способ достичь этого - включить в основной файл переменную или константу, которая будет ограничена diggstyle_code.php

Таким образом, например: 'main.php'

<?php
define("_VERIFICATION_", "y");
require("diggstyle_code.php");
?>

и теперь diggstyle_code.php

<?php
if ( _VERIFICATION_ == "y" ) {
//Here the code should be executed
} else {
// Something else
}
?>

Ответ 9

Хотя этот вопрос старый, есть другой вариант, который я использую, который отсутствует в этом потоке. Вы можете вернуть функцию из требуемого файла, который принимает аргументы, которые вы хотите передать:

return function(array $something) {
    print_r($something);
}

И назовите его аргументами, когда вы require это:

require('file.php')(['some', 'data']);

// or:

$context = require('file.php');
$context(['some', 'data']);