
- •7.Спецификация mime. Применение mime в рамках протокола http.
- •8.Cookie. Хранение, запись и передача Cookie.
- •9.Исполняемые коды программ для Web. Программы, исполняющиеся на стороне сервера и программы, исполняющиеся на стороне клиента.
- •3) Asp (Active Server Pages) — технология, разработанная компанией Microsoft, позволяющая легко создавать приложения для Веб.
- •6) Функции для работы с потоками в Perl. Дескриптор потока
- •7) Массивы в Perl: скалярные, ассоциативные. Их инициализация и обращение к элементам массива.
- •9) Ebnf. Для описания синтаксиса регулярных выражений в языках сценариев используются расширенные формы Бэкуса-Наура (рфбн, или, по-английски. Extended Backus-Naur Form, ebnf). Ebnf — это современная
- •11) Php (php:Hypertext Preprocessor).
- •13) Php функции.
- •Isapi-программы может не только вызвать аварийное завершение, но и вывести из строя сервер.
13) Php функции.
особенности пользовательских функций в PHP:
-Доступны параметры по умолчанию. Есть возможность вызывать одну и ту же функцию с переменным числом параметров;
-Пользовательские функции могут возвращать любой тип;
-Область видимости переменных внутри функции является иерархической (древовидной);
-Есть возможность изменять переменные, переданные в качестве аргумента.
Объявление:
function Имя (аргумент1[=значение1],...,аргумент1[=значение1])
{
тело_функции
}
Внутри функции все переменные локальны.
По умолчанию аргументы в функцию передаются по значению. По ссылке передают так : ставят амперсанд (&) перед именем аргумента в описании функции.
Переменное число аргументов в функциях
Реализация этой возможности заключается в использовании функций func_num_args(), func_get_arg() и func_get_args().
Не существует локальных функций, функция внутри другой функции видна всей программе.
Функции-переменные.
- динамические вызовы функций, имена которых определяются во время выполнения программы. Вызов функции-переменной представляет собой имя переменной, за которым следует пара круглых скобок. В круглых скобках могут перечисляться параметры (однако присутствие параметров не обязательно). Обобщенный синтаксис функции-переменной: $имя_функции( );
14) Массив представляет собой список однотипных элементов. Существует два типа массивов, различающиеся по способу идентификации элементов. В массивах первого типа элемент определяется индексом впоследовательности. Массивы второго типа имеют ассоциативную природу, и для обращения к элементам используются ключи, логически связанные со значениями. Впрочем, на практике операции с массивами обоих типов выполняются сходным образом. По размерности массивы делятся на одномерные и многомерные.
Одномерные индексируемые массивы
При обращении к элементам одномерных индексируемых массивов используется целочисленный индекс, определяющий позицию заданного элемента.
Обобщенный синтаксис элементов одномерного массива:
-$имя[индекс1 ];
Одномерные массивы создаются следующим образом:
-$meat[0] = "chicken";
-$meat[1] = "steak";
-$meat[2] = "turkey";
При выполнении следующей команды:
-print $meat[l];
В браузере выводится строка steak.
При создании массивов также можно воспользоваться функцией array(). Массив $meat из предыдущего примера создается командой Smeat = array("chicken", "steak", "turkey");
Приведенная выше команда print приводит к тому же результату - выводу строки steak. Чтобы включить новый элемент в конец массива, можно просто присвоить значение переменной массива без указания индекса.
Следовательно, массив Smeat можно создать еще одним способом:
$meat[] - "chicken"
$meat[] - "steak"
$meat[] - "turkey"
Одномерные ассоциативные массивы
Ассоциативные массивы особенно удобны в ситуациях, когда элементы массива удобнее связывать со словами, а не с числами. Предположим, вы хотите сохранить в массиве лучшие сочетания вин и
блюд. Проще всего было бы хранить в массиве пары «ключ/значение» — например, присвоить сорт вина названию блюда. Самым разумным решением оудет использование ассоциативного массива:
$pairings["2infandel"] = "Broiled Veal Chops";
Spainngs["merlot"] = "Baked Ham";
Spairings["sauvignon"] = "Prime Rib";
Spairings["sauternes"] = "Roasted Salmon";
Ассоциативный массив заметно экономит время и объем программного кода, необходимого для вывода определенных элементов массива. Допустим, вы хотите узнать, с каким блюдом лучше всего идет
«Мерло». Нужная информация выводится простой ссылкой на элемент массива Spairings:
print $pairings["merlot"]: // Выводится строка "Baked Ham"
Ассоциативные массивы также можно создавать функцией РНР array():
Spairings - array(
zinfandel => "Broiled Veal Chops",
merlot => "Baked Ham",
sauvignon => "Prime Rib"
sauternes => "Roasted Salmon");
Отличается только способ создания массива pairings, а функциональные возможности остаются без изменений.
Многомерные индексируемые массивы
Многомерные индексируемые массивы работают практически так же, как и их одномерные прототипы, однако элементы в них определяются несколькими индексами вместо одного. Теоретически размерность индексируемого массива не ограничивается, хотя в большинстве приложений практически не встречаются массивы с размерностью выше 3. Обобщенный синтаксис элементов многомерного массива:
$имя[индекс1 ][индекс2].. [индекс N]:
Пример ссылки на элемент двухмерного индексируемого массива:
$position = $chess_board[5][4];
Многомерные ассоциативные массивы
Многомерные ассоциативные массивы также существуют в РНР (и приносят определенную пользу). Допустим, в массиве $pairings из предыдущего примера должна храниться информация не только о сорте,
но и о производителе вина. Это можно сделать следующим образом:
$pairings["Martinelli"]["zinfandel"] = "Broiled Veal Chops"
$pairings["Beringer"]["merlot"] = "Baked Ham"
$pairings["Jarvis"]["sauvignon"] = "Prime Rib";
$pairings["Climens"]["sauternes"] = "Roasted Salmon";
Конструкция foreach представляет собой разновидность for, включенную в язык для упрощения перебора элементов массива. Существуют две разновидности оператора foreach, предназначенные для разных типов массивов:
foreach (массив as $элемент) {
блок
}
foreach (массив as $ключ => $элемент) {
блок
}
Предопределённые массивы.
$GLOBALS Содержит ссылку на каждую переменную, доступную в данный момент в глобальной области видимости скрипта. Ключами этого массива являются имена глобальны переменных. $GLOBALS существует, начиная с PHP 3.
$_SERVER Переменные, установленные web-сервером либо напрямую связанные с окружением выполнения текущего скрипта. Аналог старого массива $HTTP_SERVER_VARS (который по-прежнему доступен, но не рекомендуется).
$_GET Переменные, передаваемые скрипту через HTTP GET. Аналог старого массива $HTTP_GET_VARS (который по-прежнему доступен, но не рекомендуется).
$_POST Переменные, передаваемые скрипту через HTTP POST. Аналог старого массива $HTTP_POST_VARS (который по-прежнему доступен, но не рекомендуется).
$_COOKIE Переменные, передаваемые скрипту через HTTP cookies. Аналог старого массива $HTTP_COOKIE_VARS (который по-прежнему доступен, но не рекомендуется).
$_FILES Переменные, передаваемые скрипту через HTTP post-загрузку файлов. Аналог старого массива$HTTP_POST_FILES (который по-прежнему доступен, но не рекомендуется). Для дополнительной информации смотрите Загрузка методом POST.
$_ENV Переменные, передаваемые скрипту через окружение. Аналог старого массива $HTTP_ENV_VARS (который по-прежнему доступен, но не рекомендуется).
$_REQUEST Переменные, передаваемые скрипту через механизмы ввода GET, POST и COOKIE, и которым, следовательно, нельзя доверять. Наличие и порядок включения переменных в этот массив определяется в соответствии с директивой конфигурации PHP variables_order. Этот массив не имеет прямых аналогов в версиях PHP до 4.1.0. Смотрите также import_request_variables().
$_SESSION Переменные, зарегистрированные на данный момент в сессии скрипта. Аналог старого массива $HTTP_SESSION_VARS (который по-прежнему доступен, но не рекомендуется). Дополнительную информацию смотрите в разделе Функции обработки сессии.
15) ISAPI фильтры и расширения.
ISAPI состоит из двух компонентов: расширение и фильтры.
оба представляют собой библиотеки, загружаемые во время работы сервера.
1)ISAPI расширение правильные приложений, запускаемые на IIS. Они имеют доступ ко всем функциональным возможностям, предоставляемым IIS. ISAPI расширения реализованы в виде библиотеки DLL, которые загружаются в процесс, который контролируется IIS. Расширения используют функционал сервера и реализуют обычные веб-страницы.
2) ISAPI фильтры используются для изменения или расширения функциональности, предоставляемой по IIS. Они запускаются не по запросу конкретной страницы, а всегда при работе сервера. Фильтры могут изменять входящие и исходящие потоки данных
Фильтры реализованы в виде файлов DLL и может быть зарегистрирован на IIS и они применимы ко всем сайтам на сервере IIS.
Например задачи фильтров:
- изменения запросов (URL или заголовков), передаваемых клиентом;
- формирование статистики доступа;
- реализация простейшей аутентификации;
- реализация сжатия или шифрования ;
Основное отличие ISAPI-программы от CGI-сценария состоит в том, что ISAPI-программа представляет собой не исполняемый файл, а
динамическую библиотеку (DLL). Благодаря этому появилась возможность запускать программу не как отдельный процесс, а как поток,
принадлежащий Web-серверу. Для выполнения потока требуется значительно меньше ресурсов, чем для работы независимого процесса. Поток использует адресное пространство породившего его процесса и работает намного быстрее, чем отдельный процесс.
Если за универсальность CGI-сценариев пришлось платить недостаточной производительностью, то в качестве платы за высокую производительность разработчики ISAPI-программ жертвуют универсальностью. Арсенал языков, имеющихся в распоряжении разработчиков ISAPI-программ. значительно беднее, чем у их коллег, создающих CGI-сценарии. По сути, тому, кто хочет быстро написать достаточно большую ISAPI-программу. не остается иного выбора, кроме С++.
Второй недостаток ISAPI гораздо серьезнее первого. Поскольку программа данного типа выполняется как поток, порожденный сервером, она использует адресное пространство сервера. Следовательно, ошибка