САМОУЧИТЕЛЬ PHP 4

       

Обработчик Apache для шаблонизатора


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

Листинг 30.13. Обработчик шаблонизатора: TemplateHandler.php

<?

// Проверяем, не пытается ли пользователь запустить обработчик

// напрямую, минуя Apache.

$FileName=strtr(__FILE__,"\\","/");

$ReqName=ereg_Replace("\\?.*","",strtr(getenv("REQUEST_URI"),"\\","/"));

if(eregi(quotemeta($ReqName),$FileName)) {

  // Выводим сообщение об ошибке.

  include "TemplateHandler.err";

  // Записываем в журнал данные о пользователе.

  $f=fopen("TemplateHandler.log","a+");

  fputs($f,date("d.m.Y H:i.s")." $REMOTE_ADDR — Access denied\n");



  fclose($f);

  // Завершаем работу.

  exit;

}

// Все в порядке — корректируем переменные окружения в соответствии

// с запрошенным пользователем адресом.

@putenv("REQUEST_URI=".

  $GLOBALS["HTTP_ENV_VARS"]["REQUEST_URI"]=

  $GLOBALS["REQUEST_URI"]=

  getenv("QUERY_STRING")

);

@putenv("QUERY_STRING=".

  $GLOBALS["HTTP_ENV_VARS"]["QUERY_STRING"]=

  $GLOBALS["QUERY_STRING"]=

  ereg_Replace("^[^?]*\\?","",getenv("QUERY_STRING"))

);

// Подключаем библиотекаря.

$INC[]=getcwd();

include "Librarian.phl";

// Переходим в каталог со страницей.

chdir(dirname($SCRIPT_FILENAME));

// Загружаем шаблонизатор.

Uses("Template");

// Выводим содержимое главного блока страницы.

echo RunUrl($SCRIPT_NAME);

?>



Содержание раздела