как отключить движок php в представлениях шаблонов

#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?