#php #codeigniter
#php #codeigniter
Вопрос:
Я использую класс синтаксического анализатора шаблонов для отображения своих представлений. Поскольку представления доступны для редактирования для некоторых пользователей, мне нужно отключить интерпретатор php в представлениях.
Как это сделать?
С уважением!
Редактировать:
- Я добавил файл .htaccess в каталог views:
AddType text/plain .php
- Я расширил CI_Loader, заменив начальную метку php (добавил косые черты перед меткой php) в функции _ci_load().
Теперь php не работает в представлениях.
Ответ №1:
(предполагая, что вы используете Apache)
Вы можете сохранить файлы с расширениями .tpl и добавить что-то вроде…
AddType text/plain .tpl
… в ваш файл Apache httpd.conf (или, возможно, .htaccess).
Конечно, это не помешает людям добавлять PHP-код в шаблон, если им этого захочется, но это должно означать, что этот код не будет интерпретироваться, если файлы просматриваются на веб-сервере; однако это оставляет любой необработанный PHP-код, введенный в эти файлы, доступным в виде обычного текста для всех, кто найдетURI (www.yoursite.ext/templates/a_template.tpl ) — что может быть очень плохо, если по какой-то непонятной причине там есть что-то подобное define('DB_PASSWORD', "DBP@55w0rd");
(хорошо, это было бы очень неправильно, но вы поняли суть).
Лучшим решением было бы хранить файлы tpl вне веб-дерева или внутри папки, защищенной .htaccess Deny from all
— ваши PHP-скрипты все равно смогут их использовать, но они не будут доступны напрямую никому по http, поэтому любой PHP в ваших представлениях никогда не будет интерпретироваться какон никогда не будет доступен.
В качестве альтернативы, если вы гибки в своем движке просмотра, взгляните на PHPTAL : http://phptal.org /
Ответ №2:
Я не понимаю вашей проблемы.
Распознает ли ваш анализатор PHP в шаблонах? если да — как отключение поможет? Если нет — что PHP вообще делает с вашими шаблонами? Есть ли у них расширение .php?