Вы не зашли.
Главная » PHP » как заставить php include'ить по GET переменной
#1. koji Off (3)
Участник
2015.07.07 13:01
пишу
Код:
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:04)
#2. tipsun Off (19)
Moderator
2015.07.07 23:11
Что мешает сделать так:?
Код:
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. koji Off (3)
Участник
2015.07.08 09:09
tipsun, да это вариант, который тоже подойдет, буду использовать.
Все же мне было бы интересно почему GET не срабатывает в include, может требуется что-то включить в конфиге?
хотя, видимо, так неправильно будет передавать, скорее нужно использовать ваш пример, ведь case идентично if в таком случае.
Отредактировано koji (2015.07.08 09:09)
#4. Gemorroj Off (107)
Administrator
2015.07.10 09:09
Код:
span style="color: #0000BB"><?php$_GET['top'] = null;include(ROOTPATH.'/dir/adv.php');
так можно
#5. TLENS Off (14)
Moderator
2015.07.13 23:11
Я думаю что вариант через функцию будет правильнее в Вашем случае. Что бы никакой $case и прочего хлама не путаось в глобальной области.


Если Вам нужно передать несколько параметров например include(ROOTPATH.'/dir/adv.php?top&left&bottom&right');
Тогда делайте так:
Код:
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 но вопрос я так понимаю был в том как в инклюд передать параметры. Собственно я показал пример как это делается
Код:
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
Страниц: 1
Главная
WEB
PunBB Mod v0.6.2
0.014 s