ru en uk

  авторизація

(044) 362 48 16   (098) 294 41 60


   Ціни

Що таке SSI


Основним, найпростішим, але в той же час надзвичайно потужним інструментом підтримки великих наборів документів є SSI (Server-Side Includes - включення на стороні сервера). Якщо хтось із вас знає Сі, то він швидко зрозуміє, що SSI надзвичайно схожий на макрооязик. За допомогою SSI можна не тільки в залежності від деяких умов виводити певні частини документа, не тільки формувати документ із заздалегідь визначених шматочків, але і вставляти результат роботи деякого CGI сценарію або програми прямо в документ.


У стандартному дістрібутіве Apache є модуль mod_include. Починаючи з версії 1.2 він має розширене кількість директив і називається - XSSI (eXtended SSI). За замовчуванням він включений в компіляцію.


Включення механізму Server-Side Includes


Будь-який документ, у якого буде установлену обробник "server-parsed" буде скануватися цим модулем, якщо включена опція "Includes". Якщо ви маєте мала кількість документів з SSI, то найкраще у файлі httpd.conf вказати наступне:
AddType text / html. Shtml <br>

і встановлювати у таких файлів розширення. shtml. Якщо ж всі або майже всі документи будуть мати директиви SSI, то краще у файлі конфігурації вказати:
AddHandler server-parsed. Html

І не забудьте включити в опції директории вузла (Directory, Virtual,. htaccess) опцію Includes:
Options + Includes

Звичайно, в цьому рядку можуть бути й інші потрібні вам опції.

Базові директиви


Директиви SSI включаються в HTML документ у вигляді коментарів (це не заважає вам використовувати звичайні коментарі). Сінтакс команд має такий вигляд:
<!--# element attribute = value attribute = value ... ->

Дуже часто значення вміщується у подвійні лапки. Деякі команди дозволяють иметь тільки одну пару атрибут-значення. Зверніть увагу, що заключна частина коментарю (-->) повинна відділятися від директиви пробілом, інакше вона буде сприйнята, як її частина.

Розглянемо визначені в Apache елементи SSI:

  • config - контролює різні аспекти сканування. Його атрибутами можуть бути:

    1. errmsg - встановлює повідомлення, що виводять при виникненні помилки; у більшості випадків доцільно встановити в порожній рядок;
      Це стандартна помилка при запуску скрипта, якого немає:
      <!--# exec cgi = & quot; / cgi-bin/nonexistence.pl "->
      А тепер замінимо повідомлення про помилку, а повторимо:
      <!--# config errmsg = "Помилка, пишіть <a href=mailto:dh@null.ru> автору помилки </ a >"-->
      <!--# exec cgi = "/ cgi-bin/nonexistence.pl" -> <BR>
      Висновок:
      [an error occurred while processing this directive]
      А тепер замінимо повідомлення про помилку, а повторимо:
      Помилка, пишіть автору помилки

    2. sizefmt - встановлює формат, в якому будевиводитися розмір файлу. Формат відповідає передається бібліотечної функції strftime; Директива config sizefmt змінює формат виводу розміру файлу.
      Розмір файлу цієї сторінки в кілобайтах:
      <!--# config sizefmt = "abbrev" ->
      <!--# fsize file = "ssi.shtml "-> <BR>
      Розмір файлу цієї сторінки в байтах:
      <!--# config sizefmt = "bytes" ->
      <!--# fsize file = "ssi.shtml" -> <BR>
      Висновок:
      Розмір файлу цієї сторінки в кілобайтах: 12k
      Розмір файлу цієї сторінки в байтах: 12463

    3. 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"
    % S Секунди 34
    % s Час у секундах з 01.01.1970 957228726
    % T Час у форматі "% H:% M:% S" 14:05:34
    % U Тиждень року 49 % w Номер дня тижня 5
    % y Рік у форматі ГГ 95
    % Y Рік у форматі РРРР 1995
    % Z Тимчасова зона MSK


  • echo - виводить значеніе встановленою змінної SSI. Припустимим атрибутом є var.
    Твій IP - <!--# echo var = "REMOTE_ADDR" -> <BR>
    Твій броузер - <!--# echo var = "HTTP_USER_AGENT" -> <BR>
    Мій сервер - <!--# echo var = "SERVER_NAME" - &gt; <BR>
    Ти прийшов зі сторінки - <!--# echo var = "HTTP_REFERER" -> <BR>

  • fsize - виводить розмір файлу у визначеному за допомогою sizefmt форматі. Допустимі атрибути:
  • file - визначає шлях до файлу, щодо скануєтьсядокумента;
  • virtual - визначає стандартний кодований URL, щодо сканується документа, або, при наявності на початку слеша (/) - відносно кореня документів вузла.
  • flastmod - виводить дату останньої модифікації файлу у визначеному за допомогою timefmt форматі. Атрібути аналогічні атрибутам fsize.
  • include - включає текст іншого документа або файлу в сканується файл. До включаються файлу застосовуються всі встановлені правила обмеження доступу. Якщо для каталогу, з якого включається файл, встановлена опція IncludesNOEXEC, і включення даногодокумента призвело б до запуску програми, то документ не включається, і виводиться повідомлення про помилку. CGI сценарії викликаються, як завжди за допомогою URL, який може містити кодованих рядок запиту (query string). Положення файлу вказується за допомогою атрибутів:

    • file - указивает шлях, щодо скануються документа; шлях не може містити .. / і не може бути абсолютним шляхом; завжди краще використовувати атрибут virtual;
    • virtual - містить кодований URL, відносний або абсолютний; URL не може містити ім'я протоколу або ім'я хоста, іможе містити рядок запиту.

  • printenv - виводить вміст змінних оточення. Викликається без параметрів.
  • set - встановлює значення змінної. Її атрибутами є var, який визначає ім'я змінної, і value, що визначає її значення.
  • Змінні включення


    На додаток до стандартних оточення CGI, модуль SSI робить доступними для директив і умов, а також для викликаються через SSI сценаріїв наступні змінні:

    • DATE_GMT - поточний час за Гринвічем;
    • DATE_LOCAL --поточний локальне (для сервера) час;
    • DOCUMENT_NAME - ім'я файлу (без каталогів) документа, запрошення користувачем;
    • DOCUMENT_URI - декодірованний URL запитаної користувачем документа;
    • LAST_MODIFIED - дата останньої модифікації документа, запрошенногпро користувачем. Тобто у вкладеному SSI ця змінна буде містити ім'я "головного" документа, а не вкладеного.

    Підстановки змінних


    Підстановки змінних здійснюється всередині ув'язнених у лапки рядків у більшості аргументів SSI директів. У цих випадках знак долара можна вставити, випереджаючи його слешом:
    <!--# if expr = "$ a = $ test" ->

    Для запобігання двозначності можна укладати ім'я змінної у фігурні дужки:
    <!--# set var = "Zed" value = "; $ (a) bc_ $ (abc) "->

    В результаті такого присвоєння мінлива Zed буде мати значення "Xbc_Y", якщо мінлива a дорівнює X, а мінлива abc дорівнює Y.

    Умовні оператори


    Базовими елементами контролю є:
    & lt ;!--# if expr = "test_condition" ->
    <!--# elif expr = "test_condition" ->
    <!--# else ->
    <!--# endif ->

    Елементи elif і else є необов'язковими.


    Елемент endif закінчує елемент if і є обов'язковим.


    test_condition може бути одним з наступних:

    • string - істинно, якщо string не порожня;
    • string1 = string2
    • string1! = string2
    • string1 <string2
    • string1 <= string2
    • string1> string2
      </ li>
    • string1> = string2

    - Істинно, якщо виконується умова порівняння. Якщо string2 має форму / string /, то тоді вона інтерпретується, як регулятное вираз. Їх синтаксис аналогічний синтаксису регулярних виразів в команді Unix egrep;

    • (Test_condition) - істинно, якщо test_condition істинно;
    • ! test_condition - істинно, якщо test_condition хибно;
    • test_condition1 & & test_condition2 - істинно, якщо як test_condition1, так і test_condition2 правдиві;
    • test_condition1 | | test_condition2 - істинно,якщо хоча б test_condition1 чи test_condition2 правдиве.
    • "=" І "! =" Мають більший пріоритет, ніж "& &" і "||", а "!" має найвищий пріоритет.

    Все, що не розпізнається, як змінна, вважається рядком. ЕсЧи рядок має пробіли або символи табуляції, то її треба укладати в лапки.

 
Робота з базами даних
29.05.2007
Основи безпеки
29.05.2007
Введення в PHP5
29.05.2007