Разделение HTML и PHP кода. Сомнения по eval.

Лексеич

Московский калмык
Разделение HTML и PHP кода. Сомнения по eval.

Всем здравствуйте.

Я написал простенький скрипт форума, безо всяких заморочек и т.п. Только просмотр, добавление и удаление записей. Изначально задался целью разделить php и html. То есть сделать такой код, к которому можно было бы написать и прилепить шаблон по своему вкусу. Различные шаблонизаторы отсек. Захотелось самому реализовать. Просто захотелось. Впринципе, написанное на данный момент, отлично работает. Основное затруднение было в следующем: как реализовать цикл в шаблоне для списка тем, форумов и сообщений. Поискал ответ на вопрос в коде форума phpBB. Смысл построения кода понял так:
1. Есть некоторые специфические тэги в шаблоне.
2. Подменяем эти тэги php-вставками. Например цикл (т.н. парсинг шаблона, как я понял).
3. Загоняем всё это в eval().

Всё работает. Я очень доволен и горд собой. Был... пока в PHPClub в поиске не набрал "eval". Насколько понял, слишком опасно с ней играться.

Но потом подумал и пришел к следующим выводам:

1. Если парсится шаблон, добавленный администратором сайта. Мне кажется тут ничего страшного. не будет же хозяин сам себя ломать? Логично.
2. Запрещается опция добавления пользователями своих темплэйтов, дабы исключить внедрение вредного кода. Собственно, данную опцию я и не рассматривал.

Скажите пожалуйста, знатоки, что я забыл? Какие подводные камни еще могу встретить при работе с eval'ом?
 

Фанат

oncle terrible
Команда форума
с кодом - это ты зря.
какое отношение имеют пользователи к шаблону форума - я не понял.
 

Лексеич

Московский калмык
Автор оригинала: Фанат
какое отношение имеют пользователи к шаблону форума - я не понял.
да, тут погорячился. пользователи же не могут свои шаблоны заливать. :) не рассматриваю я эту опцию. не дорос еще.

-~{}~ 10.05.06 11:45:

Фанат, что именно зря? Такое жесткое деление? Впринципе можно вообще и без деления написать. Но вот задался целью сделать форум, добавить его в свой архив, а потом по надобности, не вспоминая кода, лепить шаблоны.
 

Лексеич

Московский калмык
Проблем вроде нет, есть вопрос или сомнение:

Скажите пожалуйста, знатоки, что я забыл? Какие подводные камни еще могу встретить при работе с eval'ом?

Код сейчас удалю. :)
 

[Gisma]

Новичок
просто сделай так, чтобы код поданный в eval не мог быть подвержен изменениям со стороны пользователя а уж способов. В этом случае по-моему главное ошибку реализации не допустить;)
 

Фанат

oncle terrible
Команда форума
если честно - я не понял, зачем тебе вообще нужен псевдо-язык, который ты превращаешь в пхп код и евалишь.
почему нельзя просто в шаблоне писать на пхп?
ведь код у тебя жутко неуниверсальный.
у тебя есть какие-то категории
а как только добавится что-то ещё вывести - список тех, кто на сайте, например - тут же понядобится вносить изменения в движок шаблонов.
 

Лексеич

Московский калмык
[Gisma]
угу.
Фанат
Он не универсальный, если необходимо реализовать еще что-то средствами пхп. Ну например тот же список пользователей. у меня задача такова: сделать минимум необходимых функций средствами пхп и забыть про пхп. Далее, по мере востребования движка, только подставлять шаблоны. Собственно поэтому и эвалю.

[Gisma] дал ответ. Главное чтобы пользователь не залез в эвал. Я понял это. Точнее, лишний раз убедился.
 

Фанат

oncle terrible
Команда форума
у тебя в движке жёстко прописан тег категори. это просто феерия.
 

[Gisma]

Новичок
Лексеич
просто лучше вообще принципу:
>>Далее, по мере востребования движка, только подставлять >>шаблоны.
вообще не руководствоваться, это создает эффект "большого комка" и приведет к расползанию функциональности. А большинство ошибок приходит именно на этом этапе. Так что парсер сейчас справляется с задачей, но с задачей поставленной изначально. Учитывай, что потом задачи будут варьироваться (т.е. не все будущие задачи возложенные на парсер будут совпадать с изначальной), а это значит лучше продумать систему заранее, чтобы потом на лету не клепать заплаты.
 

Фанат

oncle terrible
Команда форума
ты обрати внимание на заголовок.
там написано - "разделение HTML и PHP кода". Вроде бы, цель благая.
а что ты в результате получил? пхп ты отделил, да. но вместо него ты в хтмл засунул какой-то кривой непродуманный псевдоязык =)
то есть, добавил лишний компонент в систему, и при этом не выиграл ни-че-го - как был у тебя хтмл перемешан с логикой - так и остался =)
 

Лексеич

Московский калмык
Фанат
ну, что проще написать?
<forum_row>
или

while (залезть в скрипт найти какое имя у результата выборки)
echo '<tr>... <?=(залезть в скрипт и вспомнить все имена переменных )?>...</tr>';

Ну, блин. с другой стороны, ты прав. :) Псевдоязык. Мне кажется тема отклонилась от изначальной сути. Про эвал забыли. :) Приближаемся к вопросу что юзать? Свой движок, какой-нибудь Смарти или мешать хтмл и пхп. Судя по поиску в форуме этот вопрос можно перефразировать как "Что делать?" по Обломову. Ответа нет. Что использовать - зависит от поставленной задачи, ага.

Ладно, всем спасибо еще раз. :)
 

Фанат

oncle terrible
Команда форума
ну, что проще написать?
<forum_row>
или

while (залезть в скрипт найти какое имя у результата выборки)
echo '<tr>... <?=(залезть в скрипт и вспомнить все имена переменных )?>...</tr>';
ну ты шутник.
я таких клоунов давно не встречал.
 
Сверху