• Главная
  • » PHP
  • » как заставить php include'ить по GET переменной

#1 2015.07.07 13:45

koji
Участник
Зарегистрирован: 2014.07.13
Сообщений: 72
Карма: 3
Профиль

как заставить php include'ить по GET переменной

пишу

Код:

1
span style="color: #0000BB"><?phpinclude(ROOTPATH.'/dir/adv.php?top');внутри adv.php проверкаif($_GET['top']) { //выводим содержимое}if($_GET['bottom']) { //выводим содержимое}

в результате  failed to open stream: No such file or directory

прочитал за allow_url_include, но он включает по http запросу, - мне бы локально включать по переменной

Отредактировано koji (2015.07.07 16:35)

Неактивен

#2 2015.07.07 23:22

tipsun
Moderator
Зарегистрирован: 2009.10.14
Сообщений: 2277
Карма: 19
Профиль

Re: как заставить php include'ить по GET переменной

Что мешает сделать так:?

Код:

1
span style="color: #0000BB"><?php$case = 'top';include(ROOTPATH . '/dir/adv.php');// внутри adv.php проверкаswitch ($case) { default: // content break; case 'top': // top-content break; case 'bottom': // bottom-content break;}

Неактивен

#3 2015.07.08 09:17

koji
Участник
Зарегистрирован: 2014.07.13
Сообщений: 72
Карма: 3
Профиль

Re: как заставить php include'ить по GET переменной

tipsun, да это вариант, который тоже подойдет, буду использовать.
Все же мне было бы интересно почему GET не срабатывает в include, может требуется что-то включить в конфиге?
хотя, видимо, так неправильно будет передавать, скорее нужно использовать ваш пример, ведь case идентично if в таком случае.

Отредактировано koji (2015.07.08 09:20)

Неактивен

#4 2015.07.10 09:29

Gemorroj
Administrator
Откуда: Белоруссия
Зарегистрирован: 2007.11.03
Сообщений: 6594
Карма: 107
Профиль Веб-сайт

Re: как заставить php include'ить по GET переменной

Код:

1
span style="color: #0000BB"><?php$_GET['top'] = null;include(ROOTPATH.'/dir/adv.php');

так можно

Неактивен

#5 2015.07.13 23:50

TLENS
Moderator
Откуда: Украина
Зарегистрирован: 2009.04.05
Сообщений: 2402
Карма: 14
Профиль

Re: как заставить php include'ить по GET переменной

Я думаю что вариант через функцию будет правильнее в Вашем случае. Что бы никакой $case и прочего хлама не путаось в глобальной области.


Если Вам нужно передать несколько параметров например include(ROOTPATH.'/dir/adv.php?top&left&bottom&right');
Тогда делайте так:

Код:

1
span style="color: #0000BB"><?php //index.phpcall_user_func(include (ROOTPATH.'/dir/adv.php'), ['top'=>'', 'left'=>'']);?><?php // advreturn function ($arg) { if (isset($arg['top'])) { echo 'top'; } if (isset($arg['left'])) { echo 'left'; } if (isset($arg['bottom'])) { echo 'bottom'; } if (isset($arg['right'])) { echo 'right'; }};// end adv.php?>

А если Вам нужно использовать только один параметр типа подгрузки страницы top тогда можно сделать через свитч
Но в таком случае правильнее всего будет использовать разные файлы типо top.php left.php right.php и так далее. Что бы в adv.php было меньше каши и в нужном кейсе подгружать нужный файл. Возможно даже можно обойтись без adv.php но вопрос я так понимаю был в том как в инклюд передать параметры. Собственно я показал пример как это делается

Код:

1
span style="color: #0000BB"><?php // index.php$page = 'top';$return = call_user_func(include(ROOTPATH.'/dir/adv.php'), $page);if (404 == $return) { // нету такого кейса}?><?php // adv.phpreturn function ($page) { switch ($page) { case 'top': echo 'top'; return 'top'; // или break; case 'left': echo 'left'; return 'left'; // или break; default: echo '404'; return 404; }};// end?>

И да лучше в нашем случае использовать include_once

Неактивен

  • Главная
  • » PHP
  • » как заставить php include'ить по GET переменной

Дополнительно

forum.wapinet.ru

PunBB Mod v0.6.2
0.010 s