Переменные окружения

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

Для вставки переменных в шаблон страницы используется выпадающий список вверху окна с шаблоном.

Достаточно просто выбрать из списка необходимую переменную, и она будет вставлена в код страницы.


В шаблоне страницы доступна вставка следующих типов переменных: «общие объекты»; «последние новости, статьи»; «группы баннеров»; «меню»; «объекты, привязанные к странице». Переменные таких типов как «Последние новости, статьи», «группы баннеров» и «меню» создаются пользователями, остальные присутствуют в системе по умолчанию.

Переменные раздела «Последние новости, статьи » представляют собой список всех созданных до этого момента анонсов новостных страниц, для которых указан тип анонса «Последние N-записей на другой странице» (подробней об этом читайте в соответствующем разделе руководства).


В коде страницы переменная анонса новостей выглядит как
{anonses id=№№}
, где №№ - id анонса.
Для удобства идентификации переменных лучше давать подобным анонсам максимально развернутые имена, так же можно ориентироваться на идентификатор анонса (цифры после id в заголовке анонса). Важно помнить, что анонс, после того, как вы вставите его в шаблон страницы будет выводится только на тех страницах, которые указаны в шаблоне новостей на вкладке «Правила формирования блоков».

Переменные раздела «Группы баннеров » представляют собой список всех созданных до этого момента групп баннеров (подробней об этом читайте в соответствующем разделе руководства).
{ banner id=№№}
, где №№ - id группы баннеров.
Для удобства идентификации переменных лучше давать группам баннеров максимально развернутые имена, так же можно ориентироваться на идентификатор группы баннеров (цифры после id в заголовке).

Переменные раздела «Меню » представляют собой список всех созданных до этого момента меню (подробней об этом читайте в соответствующем разделе руководства).
В коде страницы переменная шаблона выглядит как
{ menu id=№№}
, где №№ - id меню.
Для удобства идентификации переменных лучше давать меню максимально развернутые имена, так же можно ориентироваться на идентификатор меню (цифры после id в заголовке). Важно помнить, что меню будут выводится только на тех страницах, которые указаны на вкладке «Общие свойства» шаблона меню.

Рассмотрим теперь переменные группы «Общие объекты », т.е. переменные доступные для вставки в шаблон страницы «по умолчанию».

Переменная Назначение
{ page_title} Заголовок страницы. Соответствует заголовку, указанному в поле "Название" в форме создания/редактирования страницы (см. соответсвующий раздел руководства), совпадает с названием страницы в структуре сайта. Используется для вывода заголовка в тексте страницы.
{ page_full_title} Полный заголовок страницы. Соответствует заголовку, указанному в поле "Полный заголовок" в форме создания/редактирования страницы (см. соответсвующий раздел руководства). Обычно используется в качестве тега страницы </td> </tr><tr><th style="VERTICAL-ALIGN: top; font-wight: bold">{ page_notags_title} </th> <td>{ page_full_title}, из которого вырезаны все html теги </td> </tr><tr><th style="VERTICAL-ALIGN: top; font-wight: bold">{ page_content} </th> <td>Выводит содержание страницы. Для <a href="/multimedia/kak-v-vorde-otklyuchit-numeraciyu-pervoi-stranicy-razdelnaya.html">текстовой страницы</a> это будет текстовое содержание страницы, для новостных - анонс новостей, для страниц каталога - список элементов и т.д. </td> </tr><tr><th style="VERTICAL-ALIGN: top; font-wight: bold">{ page_info} </th> <td>Описание страницы. Соответствует заголовку, указанному в поле "Описание" в форме создания/редактирования страницы (см. соответсвующий раздел руководства). </td> </tr><tr><th style="VERTICAL-ALIGN: top; font-wight: bold">{ page_meta} </th> <td>Метатеги страницы. Соответствует заголовку, указанному в поле "Слова для раскрутки " в форме создания/редактирования страницы (см. соответсвующий раздел руководства). В отличие от других переменных выводит не просто данные, а сразу тег <meta>. </td> </tr><tr><th style="VERTICAL-ALIGN: top; font-wight: bold">{ page_css} </th> <td>Подключает ссылки на доп. стили. Необходим, когда на сайте есть модули "форум", "сервер личных сообщений" </td> </tr><tr><th style="VERTICAL-ALIGN: top; font-wight: bold">{ firm_name} </th> <td>Название сайта. Задается в настройках - в админ панели. </td> </tr><tr><th style="VERTICAL-ALIGN: top; font-wight: bold">{ firm_slogan} </th> <td>Слоган сайта. Задается в настройках - в админ панели </td> </tr><tr><th style="VERTICAL-ALIGN: top; font-wight: bold">{ body_onload} </th> <td>Системная переменная, используется для вывода вызова скриптов при загрузке <body>. Вызывается в теле тега - <body{ body_onload}>. Влиять на эту переменную пользователь в системе не может. Для инициализации вызова собственных скриптов, вставте код вызова непосредственно в шаблон после переменной { body_onload}. Для удобства вставки инициализации скрипта в шаблоны нескольких страниц, можно вынести этот код в отдельную баннерную группу и настроить в шаблоне вызов баннеров переменной - <body{ body_onload} { banner id=№№}>. </td> </tr><tr><th style="VERTICAL-ALIGN: top; font-wight: bold">{ javascript} </th> <td>Системная переменная, используется для вывода вызова скриптов. Вызывается внутри тега <head> - <head>{ javascript}</head>. Влиять на эту переменную пользователь в системе не может. Для инициализации вызова собственных скриптов, вставте код вызова непосредственно в шаблон после переменной { javascript}. Для удобства вставки инициализации скрипта в шаблоны нескольких страниц, можно вынести этот код в отдельную баннерную группу и настроить в шаблоне вызов баннеров переменной - <head>{ javascript} { banner id=№№}</head>. </td> </tr><tr><th style="VERTICAL-ALIGN: top; font-wight: bold">{ parent_title} </th> <td>Если страница является подстраницей, выводит название "родительской" страницы. Используется для составление сложных заголовков страниц и вывода навигации типа "хлебные крошки". </td> </tr><tr><th style="VERTICAL-ALIGN: top; font-wight: bold">{ language_switcher id=0} </th> <td>Переключатель языков </td> </tr></tbody></table></td> <p>Всем привет, тема переменных в CSS давно ходит по интернету, однако не все знают о том, что это такое, да и сама технология не так давно вышла в релиз. И хоть использовать её во многих случаях рановато, уже пора понимать что она из себя представляет и как ею пользоваться. Давайте попробуем разобраться с технологией вместе. Обращу ваше внимание, что эта статья для тех, кто не знает о CSS переменных (кастомных свойствах) или только слышал о них. Если вы знакомы и умеете работать с данной фичей, то вам данная статья будет не интересна.<br><br> Итак, тема с переменными в стилях уже затерта до дыр, т.к. они давным давно существуют в препроцессорах. Это удобно, я уже плохо представляю себе написание стилей без возможности сохранить где-то определенное значение (цвет, величину, название шрифта, тип маркера у списка, всё что может придти в голову...). Однако препроцессоры не могут дать нам той гибкости, которую дают нативные переменные в CSS, и скоро вы поймете, почему.</p><p>Для начала нужно понять, как объявлять и использовать переменные. Переменные объявляются в селекторах:</p><p> :root { --body-background: #ccc; } body { background-color: var(--body-background); } <br> Как видно из листинга выше, переменные объявляются двумя дефисами перед именем: <br><b>--variable-name </b></p><p>Чтобы использовать переменную, необходимо воспользоваться функцией <b>var </b>. Она имеет 2 параметра. Это, естественно, имя переменной, а вторым необязательным параметром идёт значение свойства, которое необходимо использовать в случае отсутствия переменной.</p><p>На этом набор новых возможностей с приходом переменных, разумеется, не заканчивается. Имея переменные в арсенале CSS, мы получаем большую гибкость в написании стилей. Например, теперь чтобы составить медиазапрос для экранов <320px в ширину, не нужно переопределять свойство целиком. Достаточно изменить значение переменной. Т.е.</p><p>Title { --wrapper-width: 50%; width: var(--wrapper-width); } @media (max-width: 320px) { --wrapper-width: 100%; } <br> Всё! Этого достаточно, чтобы свойство <b>width </b> изменило свое значение!</p><p>Если CSS способен отслеживать изменения своих переменных, это значит, что с этим можно взаимодействовать различными способами. </p><h4>Что насчёт JavaScript?</h4> Управляя аттрибутом style, можно изменить стиль, прибегая к минимальным затратам усилий. Приведу грубый пример на React.<p>Title { --background: blue; background-color: var(--background); } <br> changeColor() { this.setState({ style: {"--background": "green"} }); } <div className="title" style={this.state.style} onClick={this.changeColor.bind(this)}>Title</div> <br> Теперь по клику на элемент с классом <b>title </b> будет меняться цвет фона у элемента. Круто? Ещё бы! Не нужно добавлять новый класс, переопределять свойство или делать другие действия, способствующие изменению фонового цвета у элемента.</p><p><b>Ремарка </b></p><p>Если кто-то не знаком с React или кому-то просто непонятно, что произошло. Мы просто средствами JavaScript изменили аттрибут style у элемента, изменив значение переменной <br><b>--background </b><br></p><br> Используя переменные, изменять css извне стало проще, методов использования можно придумать массу, а мы пойдем дальше.<h4>Области видимости</h4> Нужно сказать пару слов об области видимости CSS переменных, здесь всё просто. Объявленная переменная доступна всем селекторам дочерних элементов данного селектора. Т.е. в листинге ниже использовать переменную <b>--b </b> в тэге <b>html </b> будет нельзя. А вот переменная <b>--a </b> в <b>body </b> и всех дочерних элементах будет работать без проблем (если её конечно не переопределят где-то ниже).<p>Html { --a: #ccc; } body { --b: #a3a3a3; } <br> (я знаю, что цвета в примерах скучные, но я плохо помню цвета по hex-коду:))</p><h4>Переменные и calc</h4> Как и любое числовое значение свойства, вы можете использовать переменную в функции <b>calc </b>.<p>Title { --title-width: 300px; width: calc(var(--title-width) + 150px); } <br> Круто! Особенно если учесть что переменную <b>--title-width </b>, можно менять как внутри CSS, так и извне.</p><p>Заметьте, что величину мы обязаны положить в переменную. Дописать <b>px </b>, <b>% </b>, <b>rem </b> и т.д. к вызванной переменной у нас не получится. Однако ничто не мешает нам умножить с помощью функции <b>calc </b> значение на единицу в необходимой нам величине.</p><p>Title { --title-width: 300; /* так не сработает */ width: var(--title-width)px; /* так сработает */ width: calc(var(--title-width) * 1px); } </p><h4>В заключение</h4> CSS переменные дают много гибкости, это мощный инструмент, который может быть очень полезен в ряде случаев. Однако спешить его применять в боевых проектах я не рекомендую. Если мы заглянем на <input type="hidden" name="client" value="pub-7906980613962003"><input type="hidden" name="forid" value="1"><input type="hidden" name="ie" value="windows-1251"><input type="hidden" name="oe" value="windows-1251"><input type="hidden" name="cof" value="GALT:#D7162C;GL:1;DIV:#ffffff;VLC:940F04;AH:center;BGC:FFFFFF;LBGC:FFFFFF;ALC:ffffff;LC:ffffff;T:444444;GFNT:B3B3B3;GIMP:B3B3B3;FORID:11"><input type="hidden" name="hl" value="ru"></td> </tr></table></form> <h1>Переменные и функции</h1> <p>Когда в главе 2 мы обсуждали использование переменных, то не затронули понятие области их действия. Возвратимся к теме переменных и обсудим, как работают вместе переменные и функции.</p> <h5>Область действия переменных и глобальные переменные</h5> <p>Во втором разделе данной главы, говоря о передаваемых в функцию парамет рах, мы отметили, что переменные могут быть отправлены в функцию в каче стве.аргументов. Однако можно использовать и переменную из функции, если это глобальная переменная. Переменная становится таковой с помощью ин струкции global. Рассмотрим область действия, или область видимости пере менной. Область действия переменной это та часть программы, в которой переменная существует. По умолчанию переменные, которые вы создаете в сце нарии, имеются, пока работает ваш сценарий. И наоборот, переменные сре ды (такие как SOSTYPE) существуют на сервере от момента запуска до выклю чения.</p> <p>Впрочем, функции создают новую область видимости. Переменные функ ции аргументы функции и любые переменные, определенные внутри функ ции, существуют только в этой функции и недоступны извне. Другими слова ми, это локальные переменные с локальной областью действия. Подобным образом к внешней переменной можно обратиться, только передав ее в функ цию как аргумент или же с помощью инструкции global. Последняя приблизи тельно означает: «Я хочу, чтобы эта переменная в функции была такой же, как и вне функции». Другими словами, глобальная инструкция превращает локальную переменную с областью видимости внутри функции в глобальную переменную с областью действия в пределах всей программы. Любые изменения глобаль ной переменной в функции автоматически передаются в переменную с тем же именем, когда она используется вне функции (после вызова функции, конеч но), без помощи команды return.<br> Синтаксис инструкции global следующий:</p><p>Function FunctionName (SArgument) {<br> global $Variable;<br> statement(s); </p><p>Рассмотрим подробнее, что же дает нам инструкция глобализации. Обыч ная переменная, даже если ее имя внутри функции полностью совпадает с та ким же именем в основной части программы, представляет собой совершенно другую структуру (возможно, с другим значением, нежели переменная вне функ ции). Пусть строка вызова функции выглядит как FunctionName ($Valuel) , а функция определена как FunctionName ($Argumentl). В момент обращения к функции РНР устанавливает значение $Argumentl равным значению $Valuel, и далее первое используется в теле функции. Если вы измените значение $Argumentl внутри функции, это никак не отразится на значении $Valuel. Если бы имена переменных случайно совпали, это бы ничего не изменило: они все равно являются двумя разными переменными. Область действия одной внут ри функции, другой вне функции. Поэтому, чтобы избежать путаницы, при написании функций мы предусмотрительно использовали различные имена пе ременных в строке определения функции и в строке ее вызова.</p> <p>Мы затронули эту тему, потому что на самом деле необязательно применять разные имена. Для удобства можно использовать одно и то же имя в строке функции и в строке вызова (тогда легко запомнить передаваемые аргументы), но помните, что это разные переменные. То, что происходит со значением переменной внутри функции, остается в функции. И наоборот: изменения пе ременной вне функции не действуют на переменную с тем же именем внутри функции. Но, если вы сделали переменную глобальной с помощью инструкции global, она становится одной и той же переменной и внутри, и снаружи. Использование инструкции global</p> <ol><li>Откройте файл numbers.php в текстовом редакторе (листинг 9.6).</li> <li>Уберите аргументы $Price и $TaxRate из функции CalculateTotal, что бы строка 2 выглядела так:</li> function CalculateTotal ($HowMany, $SavingsT { <p>Переменные $Price и $TaxRate будут введены в функцию как $Cost и $Тах с помощью инструкции global, поэтому нет необходимости использовать их как аргументы.</p> <li>Добавьте две глобальные инструкции.</li> global $Cost;<br> global $Tax; <p>Они «Прикажут» функции использовать переменные $Cost и $Тах, которые уже существуют вне ее.</p> <li>Отредактируйте оставшуюся часть функции, заменив переменную $Price на $Cost, $TaxRate на $Тах, a $TheCost на $TotalCost.</li> $Тах++; // $Тах составляет 1.06. *<br> $TotalCost ~ ($Cost * $HowMany);<br> if (($TotalCost < 50) AND ($Savings)) {<br> print ("Your $$Savings will not apply because<br> -the total value of the sale is under !\n<P>");<br> } if ($TotalCost >= 50) {<br> $TotalCost = $TotalCost $Savings;<br> }.<br> $TotalCost = $TotalCost * $Tax;<br> return $TotalCost; <p>Так как теперь функцией используются разные имена переменных, необхо димо соответствующим образом изменить вычисления. Чтобы лучше понять область действия переменной, мы поменяли также переменную $TheCost на $TotalCost. Запомните, что $TotalCost в функции это совсем не та перемен ная, как переменная с тем же именем, но находящаяся вне функции</p> <li>Ниже в сценарии, после строки $Тах = 0.06; (строка 29), распечатайте текущее значение переменной. Оно будет меняться в ходе дальнейшего выполнения сценария.</li> print ("The tax value is currently $$Tax .\n<P>"); <p>Для показа того, что инструкция global вводит переменную в функцию и что любые реализованные в функции изменения применяются глобально, распечатаем значение $Тах до и после вызова функции.</p> <li>Измените строку вызова функции CalculateTotal () , чтобы переменные</li> $Тах и $Cost больше не передавались как аргументы.<br> $TotalCost = CalculateTotal ($Quantity, $Discount); <p>Так как функция принимает теперь только два аргумента, передача четырех аргументов вызовет ошибку.</p> <li>Еще раз распечатайте значение переменной $Тах.</li> print ("After calling the function, the tax value<br> is now $$Tax .\n<P>"); <p>Если бы не было инструкции global, то значения, распечатанные здесь и выше, были бы одинаковыми. Но, поскольку глобальная переменная $Тах была модифицирована в функции, распечатанные значения будут разными.</p> <li>Сохраните сценарий (листинг 9.7), загрузите его на сервер и протестируй те в браузере (рис. 9.5). Не забудьте отправить в сценарий значение коли чества (и значение скидки, если захотите), добавив его к <a href="/download/kak-udalit-freim-iz-brauzera-gugl-hrom-kak-poluchit-url-adres-freima-v.html">адресу URL</a> или через HTMLформу.</li> </ol><p>Листинг 9.7 т Так как функции CalculateTotal требуются значения пере менных $Cost и $Тах, они легко могут быть включены с помощью инструкции global. Помните, переменные больше нельзя передавать как аргументы это может запутать программиста и вызвать определенные ошибки в работе при ложения.</p><p>1 <?php<br> 2 function CalculateTotal ($HowMany, $Savings) {<br> 3 global $Cost;<br> 4 global $Tax;<br> 5 $Tax++; // $Tax составляет 1.06.<br> 6 $TotalCost = ($Cost * $HowMany);<br> 7 if (($TotalCost < 50) AND ($Savings)) {<br> 8 print ("Your $$Savings will not apply because the total value<br> of the sale is under ! \n<P>") ;<br> 9 }<br> 10 if ($TotalCost >= 50) {<br> 11 $TotalCost = $TotalCost $Savings;<br> 12 } . .<br> 13 $TotalCost = $TotalCost * $Tax;<br> 14 return $TotalCost;<br> 15 } // Конец функции CalculateTotal.<br> 16 function CalculatePayments ($Amount, $NumberPayments) {<br> 17 $ Payments = round ($ Amount , 2) / $Number Payments;<br> 18 $Payraents = sprintf ("%01.2f", $Payrnents);<br> /19 return $Payments;<br> 20 } // Конец функции CalculatePayments.<br> 21 ?> <br> 22 <HTML><br> 23 <HEAD><br> 24 <TITLE>Calculation Functions
25
26
27 28 $Cost = 20.00;
29 $Tax = 0.06;
30 print ("The tax value IB currently $$Tax . \n

n);
31 if ($Quantity) {
32 $Quantity = abs ($Quantifey) ;
33 $Discount = abs($Discount) ;
34 $TotalCost = CalculateTotal ($Quantity, $Discount);
35 print ("After calling the function, the tax value is now $$Tax
36 // Печать результатов.
37 print ("You requested to purchase $Quantity widget (s) at $$Cost
each.\n

") ;
38 print ("The total with tax, minus your $$Discount, comes to $");
39 printf ("%01.2f", $TotalCost);
40 print (".\n

You may purchase the widget (s) in 12 monthly
installments of $");
41 print (CalculatePayments ($TotalCost, "12"));
42 print (" each.\n

") ;
43 } else {
44 print ("Please make sure that you have entered both a quantity
and an applicable discount and then resubmit.\n");
45 }
46 ?>
47
48

Задание значений аргументов по умолчанию

При написании функций можно задавать аргументам значения по умолчанию. Функция будет использовать это значение, только если не получит аргумент, который заменит значение по умолчанию своим фактическим значением при вызове. Другими словами, задание аргументу значения по умолчанию делает этот аргумент необязательным, опциональным при вызове функции.

В качестве примера возьмем функцию CalculatePayments () (листинг 9.7). Как количество ежемесячных платежей можно задать значение 12 по умолча нию, создав функцию и используя следующий синтаксис:

Function CalculatePayments ($Amount, $NumberPayments = "12") {

Вызов функции с помощью кода CalculatePayments ($Amounts) ; не приве дет ни к каким проблемам, а строка CalculatePayments ($Amounts, " 2 4 ") ; за менит значение переменной $NumberPayments со значения по умолчанию, рав ного 12, на фактическое, равное 24.

Значение аргумента по умолчанию используется, если логика программы подразумевает определенное значение, которое все же можно изменить. Одна ко необходимо помнить, что аргументы по умолчанию должны всегда быть написаны после других стандартных аргументов (то есть не имеющих значения по умолчанию). Это делается потому, что значения аргументам в РНР присваи ваются напрямую в порядке их получения из строки вызова. Следовательно, невозможно опустить значение для первого аргумента и задать значение вто рому (это показывает, что вы послали одно значение, которое будет автомати чески присвоено первому аргументу, а не второму). Рассмотрим пример того, как не надо вызывать функцию. Допустим, функция определена следующим образом:

Function CalculateTotal ($HowMany, $Price = "20.00", $TaxRate = "0.06") {

Мы вызовем ее такой строкой:

CalculateTotal (3, "0.07");

При этом мы собираемся задать аргументу $HowMany значение 3, желая оста вить показатель $ Price равным 20.00 и надеясь изменить величину $TaxRate на 0.07. Увы, у нас ничего не выйдет. Переменная $HowMany действительно по лучит значение 3, $Price 0.07, a $TaxRate останется равным 0.06. Помнится, мы хотели получить несколько иной результат. Добиться нужного результата можно следующим образом:

CalculateTotal (3, "20.00", "0.07");

Теперь в свете того, что мы узнали о задании значений аргументов по умол чанию, изменим страницу numbers.php (листинг 9.7).

Написание функции, которая использует значения по умолчанию

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

При использовании SSI общий синтаксис вывода определенной переменной окружения будет следующий.

Некоторые переменные с их описанием перечислены в табл. 1. Заметьте, что все имена пишутся заглавными символами. Хотя это условие и необязательно, именно такая форма записи является традиционной и устоявшейся.

Табл. 1. Список переменных окружения
Переменная Описание
DOCUMENT_ROOT Путь к корневой папке сайта. Для локального веб-сервера значение может принимать вид z:/home/сайт/www, а в других случаях зависит от операционной системы сервера и используемого программного обеспечения.
GATEWAY_INTERFACE Версия CGI (Common Gateway Interface, общий шлюзовый интерфейс). Значение обычно равно CGI/1.1 .
HTTP_ACCEPT Типы файлов, которые способен принять браузер. В качестве значения возвращается список поддерживаемых MIME-типов разделенных между собой запятой, например: text/html, application/xhtml+xml .
HTTP_CONNECTION Тип соединения браузера с веб-сервером. Так, значение keep-alive означает, что браузер поддерживает постоянное соединение с сервером. При этом в течение одного сеанса соединения разрешено делать несколько запросов. Повторного соединения в таком случае уже не происходит.
HTTP_HOST Доменное имя сайта. Обычно различают имена с префиксом www (www..ru). Переменная вернёт тот адрес сайта, который указан в адресной строке браузера.
HTTP_REFERER Адрес страницы, с которой пользователь перешел на данный сайт, он еще называется реферер.
HTTP_USER_AGENT

Идентификатор используемого браузера и операционной системы. В качестве значения возвращается строка, содержащая ключевые слова. Например, следующая строка

Mozilla/5.0 (Windows NT 6.1; WOW64; rv:6.0.2) Gecko/20100101 Firefox/6.0.2

говорит, что пользователь использует браузер Firefox 6.0.2 под операционной системой Windows 7.

QUERY_STRING Запрос, который указан в адресной строке после вопросительного знака (?). Обычно пишется в форме «переменная=значение», где переменные разделяются между собой амперсандом (&).?id=5&slv=34 будет возвращено значение id=5&slv=34 .
REMOTE_ADDR IP-адрес посетителя сайта.
REQUEST_METHOD Метод отправки данных на сервер. По умолчанию применяется метод GET.
REQUEST_URI Адрес запрашиваемого документа. Отсчёт ведётся от корня сайта, т.е..html вернется значение 1.html .
SERVER_ADDR IP-адрес компьютера, на котором размещается сайт.
SERVER_ADMIN Адрес электронной почты администратора сайта.
SERVER_NAME Имя сервера.
SERVER_PORT Порт, по которому ожидается получение данных.
SERVER_PROTOCOL Протокол для получения и отправки данных. Значение обычно равно HTTP/1.1 .
SERVER_SOFTWARE Программное обеспечение установленное на сервере. Для веб-сервера Apache возвращается номер версии (Apache/2.2.4 ), а также версия PHP (PHP/5.3.3 ).

В примере 1 показано использование переменных окружения для отображения на веб-странице требуемой информации.

Пример 1. Вывод значения переменной DOCUMENT_ROOT

SSI

Путь к корневой папке сайта:

В результате выполнения примера будет выведена следующая строка: Путь к корневой папке сайта: /home/сайт/www .

Значения переменных окружения можно посмотреть с помощью программы на PHP, используя функцию phpinfo(), как показано в примере 2.

Пример 2. Использование phpinfo()

В результате выполнения программы будет выведена таблица с разными параметрами, в том числе и переменными окружения в разделе «Apache Environment» (рис. 1).

Рис. 1. Apache Environment

Также можно написать программу на PHP, которая будет выводить все переменные окружения в виде таблицы (пример 3)..

Пример 3. Вывод переменных окружения

\n\n\n\n"; print "

\n"; foreach ($_SERVER as $a => $b) print "\n"; print "
$a$b
\n"; print "\n\n"; ?>