![]() |
PHP: проблема c if и include
Здравствуйте
Есть небольшая проблемка, понимание которой вне моей компетенции. Помогите решить. Есть очень много файлов 'index.php' следущей структуры Код:
<?php include ('head.php') ?>'head.php' и 'bottom.php' - для всех файлов одинаковые Надо сделать чтобы в зависимости от уровня авторизованного пользователя скрывалось/показывалось 'body.php' Этот вариант работает превосходно и без вопросов Код:
<?php include ('head.php') ?>или перерыть все 'body.php' - что тоже очень не удобно да и пркатически не возможно. Если я вставляю начало проверки if ($access) { внутрь 'haed.php', а конец проверки } в начало 'bottom.php', то выскакивает ошибка Parse error: parse error, unexpected $end in w:\home\webserver\www\lib\head.php on line 181 Помогите решить проблему... |
пропиши в head.php
ob_start(); а в bottom.php $access ? ob_end_flush() : ob_end_clean(); |
RaZEr
наверное вопрос в эту тему.... недавно тоже делал инклуды и столкнулся с похожей проблемой.... а нет ли в пхп какой-нибудь функции которая бы просто инклудила файл (т.е. как в C/C++ - там просто вставляется текст), а то как я понимаю пхп сначала парсит проинклуженные файлы, и соответственно возникают такие проблемы... (у меня случай был с функциями - т.е. две функции объявляются в разных инклудовских файлах и в итоге не видят друг друга...:( так и не нашел решения...) |
Цитата:
|
Цитата:
вне провеки (до if { и после }) или внутрь? проверил оба варианта.. оба не хотят работать :-( |
maskman, я так понимаю, не до или после, а вместо ;)
т.е. логика такова * ты начинаешь буферизацию последней строкой в head.php: ob_start(); * инклудишь body.php * первой строкой в bottom.php: $access ? ob_end_flush() : ob_end_clean(); ты либо пишешь буфер в поток, если доступ дан (ob_end_flush), либо просто очищаешь буфер (ob_end_clean) - при этом твой body.php просто игнорируется условие if в данном случае просто не нужно (его роль играет ?:; оператор) |
Всем огромное спасибо..
заработало.. Если позволите в продолжении дискусии и для собственного развития. Как используя эту конструкцию написать что то наподобии if () {} else {} |
я так понимаю, ты хочешь в случае true инклудить один файл body.php, в случае false - другой?
боюсь, решение получается не очень удачное... можно попробовать в bottom.php такой финт: PHP код:
|
| Часовой пояс GMT +4, время: 23:16. |
Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.