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 правдиве.
    • "=" І "! =" Мають більший пріоритет, ніж "& &" і "||", а "!" має найвищий пріоритет.

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

 
Введення в PHP5
29.05.2007
PHP5 ще офіційно не вийшов, але "робітники" версії вже працездатності (так само як і нестабільні!), Так що ми цілком можемо почати вивчення нових можливостей прийдешнього релізу PHP і попрактикуватися з ними. У цій статті ми поговоримо про три основних нововведення в PHP5
Блокування файлів
29.05.2007
"Warning! On most operation systems flock () is implemented at the process level. When using a multithreaded server API like ISAPI you cannot rely on flock () to protect files against other PHP scripts running in parallel threads of the same server instance!"
Як надіслати пошту
29.05.2007
Якщо Вам потрібно надіслати повідомлення адміністратору, користувачеві, зробити розсилку, відправити звіт електронною поштою, то простіше за все це зробити за допомогою вбудованої функції mail ()...

 

Rambler's Top100