| imho.ws |
![]() |
|
|
|
# 1 |
|
Face Of IMHO
Регистрация: 16.03.2002
Адрес: Moscow
Пол: Male
Сообщения: 4 838
![]() |
PHP: проблема c if и include
Здравствуйте
Есть небольшая проблемка, понимание которой вне моей компетенции. Помогите решить. Есть очень много файлов 'index.php' следущей структуры Код:
<?php include ('head.php') ?>
<?php include ('body.php') ?>
<?php include ('bottom.php') ?>
'head.php' и 'bottom.php' - для всех файлов одинаковые Надо сделать чтобы в зависимости от уровня авторизованного пользователя скрывалось/показывалось 'body.php' Этот вариант работает превосходно и без вопросов Код:
<?php include ('head.php') ?>
<?php if ($access) { ?>
<?php include ('body.php') ?>
<?php } ?>
<?php include ('bottom.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 Помогите решить проблему... |
|
|
|
|
# 3 |
|
::VIP::
Регистрация: 15.05.2005
Адрес: Питер
Сообщения: 1 194
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
RaZEr
наверное вопрос в эту тему.... недавно тоже делал инклуды и столкнулся с похожей проблемой.... а нет ли в пхп какой-нибудь функции которая бы просто инклудила файл (т.е. как в C/C++ - там просто вставляется текст), а то как я понимаю пхп сначала парсит проинклуженные файлы, и соответственно возникают такие проблемы... (у меня случай был с функциями - т.е. две функции объявляются в разных инклудовских файлах и в итоге не видят друг друга... так и не нашел решения...)
__________________
Чтобы воля стала действующим началом, тело должно быть совершенным. |
|
|
|
|
# 5 | |
|
Face Of IMHO
Регистрация: 16.03.2002
Адрес: Moscow
Пол: Male
Сообщения: 4 838
![]() |
Цитата:
вне провеки (до if { и после }) или внутрь? проверил оба варианта.. оба не хотят работать :-( |
|
|
|
|
|
# 6 |
|
::VIP::
Регистрация: 09.09.2002
Адрес: Kiev
Пол: Male
Сообщения: 1 150
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
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 в данном случае просто не нужно (его роль играет ?:; оператор)
__________________
Great minds discuss ideas. Average minds discuss events. Small minds discuss people. |
|
|
|
|
# 8 |
|
::VIP::
Регистрация: 09.09.2002
Адрес: Kiev
Пол: Male
Сообщения: 1 150
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
я так понимаю, ты хочешь в случае true инклудить один файл body.php, в случае false - другой?
боюсь, решение получается не очень удачное... можно попробовать в bottom.php такой финт: PHP код:
__________________
Great minds discuss ideas. Average minds discuss events. Small minds discuss people. |
|
|