| 
SSI
 SSI расшифровывается как Server Side 
Include. SSI - это набор команд, позволяющий включить в страницу 
информацию, недоступную средствами HTML, такую как вывод программ, значения 
переменных окружения и статистику по файлам (размер, дата создания и др.). Все 
это и более позволяют делать CGI-скрипты, но зачем писать целый скрипт для 
получения размера файла, если можно воспользоваться SSI?:) 
 SSI работает очень просто: при получении запроса на документ, 
содержащий SSI-директивы, http-сервер обрабатывает документ, выполняет все 
SSI-директивы, а получившийся в результате документ возвращает клиенту. 
Http-сервер не проверяет автоматически все документы на наличие SSI-директив, а 
только те, которые относятся к типу, указанному в настройках сервера. 
 Для указания http-серверу, какие документы считать содержащими 
SSI-директивы, в srm.conf, находящемся в /etc/httpd/conf надо 
раскомментировать следующие строки: 
 AddType text/html .shtml AddHandler server-parsed 
.shtml 
 
 После этого все документы с расширением .shtml будут 
проверяться на SSI-директивы. Но удобнее будет определить чтобы все 
.html-файлы могли содержать SSI. Это делается добавление в 
srm.conf следующих строчек: 
 AddType text/html .html # не обязательно, т.к. он и так 
описан. AddHandler server-parsed .html 
 
 Теперь надо разрешить выполнение SSI в каталоге, в котором 
лежат твои файла. Найди в access.conf описание каталога, в котором лежат 
твои html'ы и добавь в его Options директиву Includes: 
 #было так Options Indexes #стало так Options Indexes 
Includes 
 
 Если твой каталог не прописан, его надо прописать. Почитай доку 
по Apache, чтоб узнать как 
это делается.:) А если у тебя нет возможности изменять srm.conf или 
access.conf, т.е. ты не root, тогда за пивом, а потом к админу.:) 
 SSI-директивы включаются в html-код в виде коментариев, но 
определенного формата: 
 <!--#SSI_директива="параметры" --> 
 
 Использовать можно следующие SSI-директивы: 
   echo var 
  
  Используется для вывода значения переменной окружения. 
  
  Твой IP - <!--#echo var="REMOTE_ADDR"--> <BR> Твой 
  броузер - <!--#echo var="HTTP_USER_AGENT"--> <BR> Мой сервер - 
  <!--#echo var="SERVER_NAME"--> <BR> Ты пришел со страницы - 
  <!--#echo var="HTTP_REFERER"--> <BR> 
   
  А вот вывод:
   Твой IP - 62.0.149.206 Твой броузер - Mozilla/4.0 (compatible; 
  MSIE 5.0; Windows 98; DigExt) Мой сервер - citforum.ru Ты пришел со 
  страницы - http://citforum.ru/ 
   
  include file include virtual 
  
  Включает в html-файл в месте, где идет вызов SSI, 
  содержимое указанного файла. Отличие include file от include 
  virtual в том, что в первом случает используется файл, находящийся в том 
  же каталоге, что и html-файл, во втором случает указывается путь к файлу 
  относительно текущего каталога. Если с помощью include file или 
  include virtual включается cgi-скрипт, то в содержимое страницы попадет 
  вывод cgi-скрипта, а не его содержание. 
  fsize file 
  
  Вставляет размер указанного файла. 
  Размер файла этой страницы:  <!--#fsize file="ssi.shtml"--> 
  <BR> 
   
  Вывод: 
   Размер файла этой страницы: 12k 
   
  flastmod file 
  
  Вставляет время последней модификации указанного файла. 
  
  Время последней модификации файла этой страницы:  <!--#flastmod 
  file="ssi.shtml"--> <BR> 
   
  Вывод: 
   Время последней модификации файла этой страницы: Wednesday, 
  21-Jun-2000 16:31:33 MSD 
   
  exec cmd exec cgi 
  
  Запускает внешнюю программу (exec cmd) или 
  cgi-скрипт (exec cgi) и вставляет в содержимое страницы вывод. 
  config errmsg config sizefmt config timefmt 
  
  Изменяет различный параметры конфигурации SSI. config 
  errmsg изменяет стандартное собщение об ошибке на введенное пользователем. 
  Сообщение об ошибке возникает при неправильном выполнении SSI-директивы, 
  например при отсутствии cgi-скрипта, который ты пытаешься запустить. 
  Это стандартная ошибка при запуске скрипта, которого нет: <BR> 
   <!--#exec cgi="/cgi-bin/nonexistence.pl"--> <BR> А теперь 
  заменим сообщение об ошибке и повторим: <BR> <!--#config 
  errmsg="Ошибка, пишите <a href=mailto:dh@null.ru>автору 
  ошибки</a>"--> <!--#exec cgi="/cgi-bin/nonexistence.pl"--> 
  <BR> 
   
  Вывод: 
   Это стандартная ошибка, возникающая при запуске скрипта, которого 
  нет:  [an error occurred while processing this directive] А теперь 
  заменим сообщение об ошибке и повторим: Ошибка, пишите автору ошибки 
   
  Директива config sizefmt изменяет формат вывода 
  размера файла. 
   Размер файла этой страницы в килобайтах:  <!--#config 
  sizefmt="abbrev"--> <!--#fsize file="ssi.shtml"--> 
  <BR> Размер файла этой страницы в байтах:  <!--#config 
  sizefmt="bytes"--> <!--#fsize file="ssi.shtml"--> 
  <BR> 
   
  Вывод: 
   Размер файла этой страницы в килобайтах: 12k Размер файла этой 
  страницы в байтах: 12,463 
   
  Директива config timefmt меняет формат вывода даты и 
  времени. 
   Время модификации файла этой страницы в секундах с 01.01.1970: 
   <!--#config timefmt="%s"--> <!--#flastmod 
  file="ssi.shtml"--> <BR> Время модификации файла этой страницы в 
  читабельном виде:  <!--#config timefmt="%d.%m.%Y 
  %H:%M:%S"--> <!--#flastmod file="ssi.shtml"--> 
  <BR> 
   
  Вывод: 
   Время модификации файла этой страницы в секундах с 01.01.1970: 
  961590693 Время модификации файла этой страницы в читабельном виде: 
  21.06.2000 16:31:33 
   
  Параметры, используемые в config timefmt:
   
    
    
      | 
        Формат | 
      
        Описание | 
      
        Пример |  
    
      | %a | 
      Аббревиатура названия дня недели | 
      Sun |  
    
      | %A | 
      Полное название дня недели | 
      Sunday |  
    
      | %b | 
      Аббревиатура названия месяца | 
      Jan |  
    
      | %B | 
      Полное название месяца | 
      January |  
    
      | %d | 
      День месяца | 
      01 (не 1) |  
    
      | %D | 
      Дата в формате "%m/%d/%y" | 
      01/31/90 |  
    
      | %e | 
      День месяца | 
      1 |  
    
      | %H | 
      Часы в 24-часовом формате | 
      13 |  
    
      | %I | 
      Часы в 12-часовом формате | 
      01 |  
    
      | %j | 
      День года | 
      235 |  
    
      | %m | 
      Номер месяца | 
      01 |  
    
      | %M | 
      Минуты | 
      03 |  
    
      | %p | 
      AM|PM | 
      AM |  
    
      | %r | 
      Время в формате "%I:%M:%S %p" | 
      11:35:46 PM |  
    
      | %S | 
      Секунды | 
      34 |  
    
      | %s | 
      Время в секундах с 01.01.1970 | 
      957228726 |  
    
      | %T | 
      Время в формате "%H:%M:%S" | 
      14:05:34 |  
    
      | %U | 
      Неделя года | 
      49 |  
    
      | %w | 
      Номер дня недели | 
      5 |  
    
      | %y | 
      Год в формате ГГ | 
      95 |  
    
      | %Y | 
      Год в формате ГГГГ | 
      1995 |  
    
      | %Z | 
      Временная зона | 
      MSK |   
  printenv 
  
  Выводит все переменные окружения. Параметров не имеет. 
  
  Список переменных окружения:<BR> <!--#printenv 
  --> 
   
  Вывод: 
   Список переменных 
  окружения: DOCUMENT_ROOT=/webdata/citforum/htdocs HTTP_ACCEPT=image/gif, 
  image/x-xbitmap, image/jpeg, image/pjpeg, */* HTTP_ACCEPT_ENCODING=gzip, 
  deflate HTTP_ACCEPT_LANGUAGE=ru HTTP_CONNECTION=Keep-Alive HTTP_COOKIE=b=b 
  HTTP_HOST=citforum.ru HTTP_REFERER=http://citforum.ru/ 
  HTTP_USER_AGENT=Mozilla/4.0 (compatible; MSIE 5.0; Windows 98; DigExt) 
  PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin REMOTE_ADDR=62.0.149.206 
  REMOTE_HOST=ras5-p206.hfa.netvision.net.il REMOTE_PORT=1376 
  SCRIPT_FILENAME=/webdata/citforum/htdocs/internet/html/ssi.shtml 
  SERVER_ADDR=195.230.75.98 SERVER_ADMIN=info@citforum.ru 
  SERVER_NAME=citforum.ru SERVER_PORT=80 SERVER_SIGNATURE= 
  SERVER_SOFTWARE=Apache/1.3.12 (Unix) UNIQUE_ID=OVZteMPmS2IAAPxiCc4 
  GATEWAY_INTERFACE=CGI/1.1 SERVER_PROTOCOL=HTTP/1.1 REQUEST_METHOD=GET 
  QUERY_STRING= REQUEST_URI=/internet/html/ssi.shtml 
  SCRIPT_NAME=/internet/html/ssi.shtml DATE_LOCAL=26.06.2000 00:37:12 
  DATE_GMT=25.06.2000 20:37:12 LAST_MODIFIED=21.06.2000 16:31:33 
  DOCUMENT_URI=/internet/html/ssi.shtml DOCUMENT_PATH_INFO= USER_NAME=andreya 
  DOCUMENT_NAME=ssi.shtml 
   
  set var 
  
  Устанавливает значение переменной окружения. Формат такой 
  set var="ИМЯ_ПЕРЕМЕННОЙ" value="ЗНАЧЕНИЕ". 
  Значение переменной SERVER_NAME: <!--#echo var="SERVER_NAME" 
  --><BR> Сменим значение: <!--#set var="SERVER_NAME" 
  value="www.dhls.ru" --><BR> Значение переменной 
  SERVER_NAME: <!--#echo var="SERVER_NAME" 
  --><BR> 
   
  Вывод: 
   Значение переменной SERVER_NAME:citforum.ru Сменим 
  значение: Значение переменной SERVER_NAME: www.dhls.ru 
   
  if/else 
  
  Наличие такой команды не может не радовать...:) Применяется 
  для управления выводом страницы по условию. Синтаксис такой: 
  <!--#if expr="УСЛОВИЕ1" --> HTML-код, который будет 
  выводиться, если УСЛОВИЕ1 истинно <--#elif expr="УСЛОВИЕ2" 
  --> HTML-код, который будет выводиться, если УСЛОВИЕ1 ложно, а УСЛОВИЕ2 
  истинно <--#else --> HTML-код, который будет выводиться, если все 
  условия ложны <--#endif --> 
   
  Условие - это либо строка, которая является истинной, если 
  непустая, или набор операторов сравнения строк. Операторы могут быть 
  =,!=,<,<=,> и >. Если 
  вторая строка заключена в "/"(слэши), то условие истинно, если в первой 
  строке встречается хоть одно вхождение второй строки. Можно объединять 
  несколько операторов сравнения с помощью операторов &&(И) и 
  ||(ИЛИ). Для группирования условий используются "()"(скобки). 
  
  Броузер:<b> <!--#if expr="$HTTP_USER_AGENT=/Nav/ || 
  $HTTP_USER_AGENT=/Mozilla/" --> Netscape Navigator <!--#elif 
  expr="$HTTP_USER_AGENT=/MSIE/" --> Internet Explorer <!--#else 
  --> Неизвестный (<!--#echo var="HTTP_USER_AGENT" 
  -->) <!--#endif --> </b> 
   Вывод: 
   Броузер: Netscape Navigator 
   
   
        |