Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Ответы WEB 2

.0.pdf
Скачиваний:
63
Добавлен:
16.05.2015
Размер:
809.61 Кб
Скачать

POST - используется для запроса сервера, чтобы тот принял информацию, включенную в запрос. Метод POST был разработан, чтобы была возможность использовать один общий метод для следующих функций:

Аннотация существующих ресурсов;

Добавления сообщений в группы новостей, почтовые списки или подобные группы статей;

Для доставки блоков данных процессам (передача данных форм)

Расширение баз данных через операцию добавления;

Реальная функция, выполняемая методом POST, определяется сервером и обычно зависит от URIЗапроса. Добавляемая информация может рассматриваться как аргументы, параметры.

PUT - метод запрашивает сервер о сохранении Тела-Запроса под URI, равным URI-Запроса. Если URI-Запроса ссылается на уже существующий ресурс, Тело-Запроса должно рассматриваться как модифицированная версия данного ресурса. Если ресурс, на который ссылается URI-Запроса не существует, и данный URI может рассматриваться как описание для нового ресурса, сервер может создать ресурс с данным URI. Если был создан новый ресурс, сервер должен информировать направившего запрос клиента через ответ с кодом статуса "201 Created". Если существующий ресурс был модифицирован, должен быть послан ответ "200 OK", для информирования клиента об успешном завершении операции. Если ресурс с указанным URI не может быть создан или модифицирован, должно быть послано соответствующее сообщение об ошибке.

DELETE - метод используется для удаления ресурсов, идентифицированных с помощью URI-Запроса.

LINK - метод устанавливает взаимосвязи между существующим ресурсом, указанным в URI-Запроса, и другими существующими ресурсами. Отличие метода LINK от остальных методов, допускающих установление ссылок между документами, заключается в том, что метод LINK не позволяет передавать в запросе Тела-Запроса, и том, что в результате работы данного метода не создаются новые ресурсы.

UNLINK - метод удаляет одну или более ссылочных взаимосвязей для ресурса, указанного в URIЗапроса.

Поля общего заголовока

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

Cache-Control | Connection | Date | Pragma | Transfer-Encoding | Upgrade | Via

Поля Заголовка-Запроса

Поля Заголовка-Запроса позволяют клиенту передавать серверу дополнительную информацию о запросе и о самом клиенте.

Заголовок-Запроса = Accept | Accept-Charset | Accept-Encoding | Accept-Language | Authorization | From |

If-Modified-Since |

Pragma | Referer | User-Agent | extension-header

Кроме того через механизм расширения могут быть определены дополнительные заголовки; приложения, которые их не распознают, должны трактовать эти заголовки, как Заголовки-Содержания.

From - в случае присутствия поля From, оно должно содержать полный E-mail адрес пользователя, который управляет программой-агентом, например

From: webmaster@WWW.org

If-Modified-Since

Поле заголовка If-Modified-Since используется с методом GET для того, чтобы сделать его условным: если запрашиваемый ресурс не изменялся со времени, указанного в этом поле, копия этого ресурса не будет возвращена сервером; вместо этого, будет возвращен ответ "304 Not Modified", несодержащий ТелаОтвета.

Пример использования заголовка: If-Modified-Since: Sat, 29 Oct 1994 19:43:31 GMT

User-Agent

Поле заголовка User-Agent содержит информацию о пользовательском агенте, пославшем запрос. Данное поле используется для статистики, прослеживания ошибок протокола, и автоматического распознавания пользовательских агентов.

Пример: User-Agent: CERN-LineMode/2.15 libwww/2.17b3

Поля Заголовка-содержания

Поля заголовка объекта (Entity-header fields) определяют опциональную метаинформацию о теле объекта или, если тело не присутствует, относительно ресурса, идентифицированного запросом.

entity-header = Allow | Content-Base | Content-Encoding | Content-Language | Content-Length | Content-Location | Content-MD5 | Content-Range | Content-Type | ETag | Expires | Last-Modified | extension-header = message-header

Allow - список методов, которые поддерживает ресурс, идентифицированный URI-Запроса. Назначение этого поля - точное информирование получателя о допустимых методах, ассоциированных с ресурсом; это поле должно присутствовать в ответе с кодом статуса "405 Method Not Allowed".

16.Протокол HTTP. Структура HTTP-ответа.

HTTP - это протокол высокого уровня (а именно, уровня приложений), обеспечивающий необходимую скорость передачи данных, требующуюся для распределенных информационных систем гипермедиа. HTTP используется проектом World Wide Web с 1990 года.

HTTP основывается на парадигме запросов/ответов. Запрашивающая программа (обычно она называется клиент) устанавливает связь с обслуживающей программой-получателем (обычно называется сервер) и посылает

запрос серверу в следующей форме: метод запроса, URI(Universal Resource Identifier - URI), версия протокола, за

которой следует MIME-подобное сообщение (Multipurpose Internet Mail Extensions (MIME-Многоцелевое Расширение Почты Internet), содержащее управляющую информацию запроса, информацию о клиенте и, может быть, тело сообщения. Сервер отвечает сообщением, содержащем строку статуса (включая версию протокола и код статуса - успех или ошибка), за которой следует MIME-подобное сообщение, включающее в себя информацию о сервере, метаинформацию о содержании ответа, и, вероятно, само тело ответа. Следует отметить, что одна программа может быть одновременно и клиентом и сервером. Использование этих терминов в данном тексте относится только к роли, выполняемой программой в течение данного конкретного сеанса связи, а не к общим функциям программы.

Для большинства приложений сеанс связи открывается клиентом для каждого запроса и закрывается сервером после окончания ответа на запрос.

HTTP-ответ

После получения и интерпретации запроса, сервер посылает ответ в соответствии со следующей формой: Ответ = Простой-Ответ | Полный-Ответ Простой-Ответ = [ Содержание-Ответа ]

Полный-Ответ = Строка-Статуса=Версия-HTTP SP Статус-Код SP Фраза-Объяснение *( Общий-Заголовок | Заголовок-Ответа | Заголовок-Содержания) CRLF

[ Содержание-Ответа ] Статус-код и пояснение к нему

Элемент Статус-Код представляет собой 3-х цифровой целый код, идентифицирующий результат попытки интерпретации и удовлетворения запроса. Фраза-Объяснение, следующая за ним, предназначена для краткого текстового описания Статус-Кода. Статус-Код нацелен на то, чтобы его использовала машина, а Фраза-Объяснение предназначена для человека.

Статус-Кода:

1xx: Информационный - не используется, но зарезервирован

2xх: Успех - Запрос был полностью получен, понят, и принят к обработке.

3xx: Перенаправление - Клиенту следует предпринять дальнейшие действия для успешного выполнения запроса.

4xx: Ошибка клиента - Запрос, содержащий неправильные синтаксические конструкции, не может быть успешно выполнен.

5xx: Ошибка Сервера - Сервер не смог дать ответ на корректно поставленный запрос. В этих случаях Код-Статуса =

"200" ; OK | "201" ; Created | "202" ; Accepted |

"203" ; Provisional Information | "204" ; No Content |

"300" ; Multiple Choices | "301" ; Moved Permanently | "302" ; Moved Temporarily | "303" ; See Other |

"304" ; Not Modified | "304" ; Use Proxy | "400" ; Bad Request | "401" ; Unauthorized |

"402" ; Payment Required | "403" ; Forbidden |

"404" ; Not Found |

"405" ; Method Not Allowed | "406" ; None Acceptable |

"407" ; Proxy Authentication Required | "408" ; Request Timeout |

"409" ; Conflict |

"410" ; Gone |

"500" ; Internal Server Error | "501" ; Not Implemented | "502" ; Bad Gateway |

"503" ; Service Unavailable |

"504" ; Gateway Timeout |

От HTTP приложений не требуется понимание всех Кодов-Статуса, достаточно распознавания классов кодов статуса (идентифицирующихся первой цифрой).

Поля Заголовка-Ответа

Поля заголовка ответа позволяют серверу передать дополнительную информацию об ответе, которая не может быть внесена в Строку-Статуса. Там может быть информация собственно о сервере.

Заголовок-Ответа= Age | Location | Proxy-Authenticate | Public | Retry-After | Server | Vary | Warning | WWWAuthenticate

17.Сервер Apache. Общие сведения, установка, конфигурирование, обслуживание.

Apache - самый распространенный Web-сервер в мире. Является бесплатной открытой программой, под различные операционные системы. Обладает большими функциональным возможностям, надежен, имеет очень гибкое конфигурирование. Существуют локализации сервера для различных языков, в том числе и для русского.

Установка:

Unix: tar xvzf apache_2.0.43.tar.gz

#cd apache_1.7.1.tar.gz

#./configure (или с параметрами)

#make (root)

#make install (root)

Windows: Запустить скаченный дистрибутив, выбрать размещение.

Для конфигурирование используются 3 файла: httpd.conf, access.conf и srm.conf в каталоге - /usr/local/apache/conf. Также в каждом каталоге могут находится файлы .htaccess.

httpd.conf -- Конфигурационный файл httpd.conf является основным и содержит настройки, связанные с работой Web-сервера, виртуальных серверов, а также всех его программных модулей.

Для установки параметров нужно их раскоментировать (убрать символ # в начале строки) Установите поле ServerName следующим образом:

Port

ServerName localhost

В поле DocumentRoot укажите ту директорию, в которой будут храниться ваши html-файлы. Мы ранее договорились, что это будет Z:\home\localhost\www):

DocumentRoot "z:/home/localhost/www"

User www Group www

ErrorLog

ScriptAlias /cgi-bin/ "z:/home/localhost/cgi/" ScriptAlias /cgi/ "z:/home/localhost/cgi/" Установки для CGI-директории.

AddType text/html .shtml

AddHandler server-parsed .shtml .html .htm

Этим Вы заставляете Apache обрабатывать файлы с указанными расширениями процессором SSI.

Файл access.conf

В access.conf содержатся директивы, описывающие права доступа к каталогам и файлам Web-сервера. Директивы имеют форму:

<Directory /www/98soft>

#директивы, относящиеся ко всем документам, хранящимся в каталоге /www/rmt.ru и вложенных в него </Directory>

<Location /cgi-bin>

#директивы, относящиеся ко всем документам, доступным по адресу http://<имя_сервера>/cgi-bin/

<путь_к_файлу> </Location>

<Files /www/98soft/form.html>

# директивы, относящиеся к файлу form.html из каталога /www/98soft </Files>

Различие между секциями Directory и Location состоит в том, что первая относится к каталогам на диске, вторая - к виртуальному пути (URL), который браузер запрашивает у Web-сервера. И в той, и в другой могут присутствовать директивы order, allow и deny, которые позволяют ограничить доступ к каталогу или URL с различных машин.

Следующие две директивы относятся к секции <Directory>. Options [options ...]

Возможные значения параметров:

ExecCGI - разрешить выполнение CGI-сценариев в данном каталоге и его поддереве; FollowSymLinks - разрешить переходы по символическим ссылкам

Includes - разрешить SSI (Server Side Includes);

Indexes - разрешить выдачу листинга каталога, если в нем нет файла индекса (index.html) MultiViews - разрешить поддержку многих языков;

All - установить сразу все перечисленные режимы кроме MultiViews.

AllowOverride [options ...] Директива определяет набор директив, допустимых в файлах .htaccess. Параметры могут быть указаны следующие:

AuthConfig - разрешить установку авторизации по имени пользователя и паролю; FileInfo - разрешить директивы, отвечающие за типы документов;

Indexes - разрешить директивы, связанные с листингом каталогов;

Limit - разрешить команды allow и deny, которые ограничивают доступ к файлам в зависимости от адреса клиентского компьютера;

Options - разрешить описанную выше директиву Options.

Подобный блок может встречаться и в файле httpd.conf и задавать настройки по умолчанию для всех каталогов <Directory z:/>

Options Includes

DirectoryIndex index.htm index.html AllowOverride AuthConfig Limit Allow from all

</Directory>

Таким образом, в этом блоке будут храниться установки для всех директорий по умолчанию (т.к. это - корневая директория)

srm.conf -- Содержит директивы, связанные с общими настройками структуры каталогов сервера. Как правило, в нем достаточно изменить лишь несколько строк.

DocumentRoot <первый каталог сервера> -- Чтобы включить на сервере поддержку CGI-сценариев, следует убрать знак комментария перед директивами ScriptAlias и AddHandler cgi-script .cgi. Первая задает каталог на диске, в котором будут храниться исполняемые программы, а вторая определяет, что все файлы с расширением .cgi должны обрабатываться как сценарии.

Директива ErrorDocument позволяет заменять стандартные сообщения сервера об ошибках на свои. Например, ErrorDocument 404 /missing.html и т.д.

18.Log-файл web-сервера, его настройка, использование информации log-файла.

access.log — файл, использующийся веб-серверами (Apache, nginx, lighthttpd, boa, прокси-сервером squid и т.д.) для записи обращений к сайту.

Является текстовым файлом, на каждой строчке которого записывается одно обращение к серверу. Используется для сбора статистики сайта (для этого используются специальные аналитические инструменты, например, WebAlizer) и для обнаружения возможных злоупотреблений на сайте.

Наиболее часто используемым форматом access.log является combined, при котором данные записываются в следующем виде:

%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" В котором:

%h — хост/IP-адрес, с которого произведён запрос к серверу;

%t — время запроса к серверу и часовой пояс сервера;

%r — тип запроса, его содержимое и версия;

%s — код состояния HTTP;

%b — количество отданных сервером байт;

%{Referer} — URL-источник запроса;

%{User-Agent} — HTTP-заголовок, содержащий информацию о запросе (клиентское приложение, язык и т.д.);

%{Host} - имя Virtual Host, к которому идет обращение.

настройка логов

Одним из кусков пазла веб-сайта являются его логи. Для большинства сайтов анализ трафика является одной из главных задач, а удобство и, в конечном итоге, результаты такого анализа зависят от того, как вы настроили свои логи.

Стандартный файл httpd.conf должен иметь раздел логов с подробными комментариями для каждой директивы. Каталог логов по умолчанию находится в /etc/httpd/logs. Позже мы покажем, как изменить этот путь. Теперь давайте рассмотрим раздел настройки логов:

ErrorLog logs/error_log LogLevel warn

LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined LogFormat "%h %l %u %t \"%r\" %>s %b" common

LogFormat "%{Referer}i -> %U" referer LogFormat "%{User-agent}i" agent CustomLog logs/access_log combined лог ошибок (Error Log)

Лог ошибок содержит сообщения, поступающие от Apache (ошибки, уведомления и т.п.). Этот лог очень полезен для поиска и устранения проблем, возникающих на стороне сервера.

Теперь давайте посмотрим на директиву настройки лога ошибок в httpd.conf: ErrorLog logs/error_log

Если вы хотите сохранять всю информацию об ошибках в один лог, этой директивы хватит (даже для множества доменов). Однако вы можете специфицировать файл лога ошибок для каждого домена. Это делается в секциях <VirtualHost> примерно следующим образом:

<VirtualHost 10.0.0.2>

DocumentRoot "/home/sites/domain1/html/" ServerName domain1.com

ErrorLog /home/sites/domain1/logs/error.log

</VirtualHost>

Уровень ошибок, попадающих в лог, устанавливается следующим образом: LogLevel warn

В Apache определены следующие уровни ошибок:

-emerg - экстренный – система не функционирует;

-alert - ошибку необходимо немедленно исправить;

-crit - критическая ошибка;

-error – ошибка;

-warn – предупреждение;

-notice - уведомление (нормальное функционирование);

-info - информационное сообщение;

-debug - сообщение отладки.

Имейте в виду, что все последующие уровни включают предыдущие.

ротация логов

В завершении мы хотим рассмотреть механизм ротации логов. Сайты с большим трафиком генерируют большие лог-файлы, которые быстро заполняют свободное место на дисках серверов. Для управления этим процессом можно использовать ротацию логов.

Есть много вариантов, как организовать ротацию логов и множество сторонних инструментов для этого. А так как мы рассматриваем стандартную конфигурацию Apache, будем использовать простую схему ротации логов.

Этот метод использует простой shell-скрипт для перемещения текущего веб-лога в архивный лог, сжатия архивного лога и хранения архивов за 12 месяцев. После этого производится перезапуск Apache с паузой для переключения лог-файлов.

Анализ лог-файлов сайта

Всесторонний анализ логов сайта помогает понять, как используется сайт и каково направление его дальнейшего развития.

Что можно выяснить, анализируя логи веб-сайта

Посещаемость. Конечно, этот показатель отражает и простой счетчик, устанавливаемый на каждой странице, но лог-файлы позволяют анализировать посещаемость более детально, например, по месяцам (Monthly Statistics), по дням (Daily Statistics), по часам (Hourly Statistics). Этот показатель позволяет выявлять часы всплеска посещаемости (пики посещаемости) и часы затишья, что очень важно знать при обслуживании сайта.

Трафик – суммарный и отдельно по страницам.

Уровень конверсии. Показывает, как посетители перемещаются по сайту, то есть смотрят ли они одну страницу или несколько. Уровень конверсии позволяет косвенно оценивать качество сайта.

Точки входа (Entry, Entry Pages) – это веб-страницы, с которых пользователи начинают работу с сайтом. Это очень ценная информация! Например, если 80% посетителей не «видят» главную страницу вашего сайта, есть ли смысл тратить время и средства для ее украшения и улучшения? Кроме того, точки входа показывают наиболее значимые страницы вашего сайта. Точки входа, как правило, соответствуют наиболее популярным страницам сайта.

Точки выхода (Exit, Exit Pages) – это веб-страницы, с которых пользователи покидают ваш сайт. Позволяют анализировать ситуацию: хорошо, если пользователь нашел то, что искал и потому уходит (довольный!), а если нет? Есть повод задуматься!

«Заброшенные» страницы – это веб-страницы, посещаемые очень-очень редко. Требуется тщательный анализ ситуации: может быть, страницы неинтересны или их трудно отыскать на вашем сайте (например, они не

указаны на карте сайта или не связаны ссылками с другими страницами сайта).

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

Поисковики (Searches). Показывает, с каких поисковиков пришло больше всего посетителей.

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

Рефереры (Referrers) – ссылающиеся на сайт ресурсы.

География посетителей. Показывает из каких стран приходят посетители на сайт.

Информация о посетителях: IP-адрес посетителя, используемые браузер и операционная система и т.д.

19. Стандарты взаимодействия прикладного программного обеспечения с сервером. Статические, динамические web-узлы. Общая спецификация обмена данными (Common Gateway Interface, Fast Common Gateway Interface).

WWW сервер - это такая часть глобальной или внутрикорпоративной сети, которая дает возможность пользователям сети получать доступ к гипертекстовым документам, расположенным на данном сервере. Для взаимодействия с WWW сервером пользователь сети должен использовать специализированное программное обеспечение - браузер (от англ. browser), другое название - программа просмотра.

Схема работы Пользователь сети запускает браузером, в функции которого входит

Установление связи с сервером Получение требуемого документа Отображение полученного документа

WWW сервер ищет запрашиваемый документ и возвращает результаты браузеру

Адрес документа указывается в виде специальной строки, называемой URL. Для протокола HTTP, используемого при взаимодействии WWW клиента и WWW сервера, URL состоит из следующих компонент:

Наименование протокола, по которому работает сервер (http). Имя машины - сервера в Internet или ее IP - номер.

Порт TCP, обращение к которому обрабатывает сервер. Место (путь) документа на машине - сервере.

Из общей схемы работы видно, что функции WWW сервера заключаются в следующем: Установление соединения с клиентским ПО по протоколу tcp.

Принятие запроса на документ по протоколу http. Возврат результатов запроса по протоколу http.

В общем случае, Web - сервером будем называть программно - аппаратный комплекс, предназначенный для выполнения вышеперечисленных действий.

Сервер как правило возвращает HTML-документ (текстовый файл содержащий элементы разметки, скриптовые сценарии, внедренные объекты, элементы мультимедиа). HTML – исключительно язык разметки гипертекста, он не является языком программирования.

Статические Web-страницы создаются вручную, сохраняются на Web-сервере и загружаются на сайт. Статические страницы создаются при помощи простейших языков html и CSS. Довольно часто используются Javaскрипты. Чаще всего это главные страницы сайтов или маленькие сайты с ограниченным объемом информации. В сущности, это и не языки программирования, а способ разметки текста: шрифт, фон, колонки. Скрипты – это уже маленькие программы, которые выполняются при наведении мыши на определенный объект (выпадающее меню, к примеру). Все эти языки понимает браузер компьютера, они не требуют никакого специального программного обеспечения. Но и возможности их невелики.

Динамические Web-страницы генерируются сервером всякий раз при получении запроса от клиента. Могут быть наполнены информацией из БД, других внешних источников? Страницы могут быть персонализированы. Как правило документы создаются с использованием программ на языках высокого уровня. Схема работы таких языков проста. На веб-сервере размещаются базы данных, там же – программы (сценарии или скрипты) для обработки этих данных по запросам пользователей. Запрос с компьютера передается на сервер, где данные обрабатываются соответствующей программой. В результате формируется веб-страница, которая передается обратно на компьютер пользователя. Все это осуществляется с помощью протокола CGI - Common Gateway Interface (что по-русски звучит как "общий шлюзовый интерфейс"). CGI - это набор правил, по которым сервер передает запрос программе.

CGI (Common Gateway Interface) — протокол, механизм, или формальное соглашение между Web-сервером и отдельной программой. Сервер кодирует входные данные, например HTML-формы, а программа CGI декодирует их и генерирует поток выходных данных.

Усовершенствованный вариант - FastCGI (mod_fastcgi). В начале своей работы Web-сервер активирует CGIпрограмму и оставляет эту программу и несколько ее копий работающими в фоновом режиме. Любые запросы к программе будут просто переданы уже активным копиям, что избавит сервер от дополнительной нагрузки, связанной с повторной активацией процесса.

20. Технология PHP. Общие концепции, переменные, структуры данных, управляющие конструкции.

PHP – язык разработки для Интренет. Разработан независимым разработчиком Расмусом Ледорфом.

PHP можно установить в двух вариантах: как отдельный интерпретатор, работающий через интерфейс CGI, или как модуль веб-сервера, встроенный в сам сервер. В последнем случае становятся актуальными все преимущества PHP. Программа на языке PHP, как правило, не живет сама по себе, а применяется для обработки запросов пользователя. Даже если интерпретатор PHP встроен в сервер как модуль, с точки зрения самой пользовательской программы, она работает через CGI.

Ближайшим аналогом PHP является ASP, но технология ASP не реализована в среде Unix/Apache, где PHP постепенно завоевывает лидирующие позиции.

PHP является процедурным языком, его можно разделить на собственно язык и библиотеку функций. Существует большое количество инструментальных средств, библиотек для PHP, интерфейсы ко всем популярным СУБД, почтовым протоколам, к разделяемой памяти, графическим файлам, архивам и множество других инструментов.

Основы языка PHP

Скрипт на PHP представляет собой файл, как правило, с суффиксом .phtml, .php3 или .php, который внутри выглядит как обычная страница на HTML. Отличие проявляется только в виде тега <?php ?>, содержащего скриптовые программы. Часто применяют сокращенную форму <? ?> или, для совместимости с визуальными средствами формирования страниц, <% %>. Внутри этих тегов располагается код на языке PHP. Вот тривиальный пример страницы:

<? include('header.html' ?> <h1>Hello WEB!</h1>

<? echo something?>

<? include('footer.html') ?>

Посетителю будет показан документ составленный из заголовка – файла header.html и завершения - footer.html, между ними будет просто включены в тот документ, что отдается сервером посетителю страницы. Таким образом можно отделить оформление страницы от ее наполнения.

Текст скрипта выполняется сверху вниз и справа налево, последовательно. Эта последовательность может быть изменена операторами цикла и условными операторами. Для в стандартный выходной поток используются функции: echo something; print(something)

Переменные

Переменные в PHP отличаются наличием символа $ (доллар) перед именем самой переменной. Объявлять переменные не надо, они создаются автоматически при присвоении им значения и удаляются при выходе из области действия. Переменные бывают типа строка, число, массив и объект:

int (integer) real, double, float string

object array

Эти ключевые слова используются для приведения типа Тип переменной определяется в момент присваивания и может быть изменен другим присваиванием.

Интерпретатор сам производит приведение типов и это может вызывать некоторые неясности (например при сравнении переменно типа число со строкой)

Пример определения переменных: <?

$a=5; // Число

$b='6b'; // Строка $c=$b.$a; // Строка: '6b5' $d="$a$b"; // Строка: '56b' $e=$a+$b; // Число: 11 $f=$b+$a; // Число: 11

?>

Рекомендуется использовать операторы приведения типа, как в языке Cи: <? if ((int)$a < (int)$b) : ?>

или

<? if ((string)$a < (string)$b) : ?>

Управляющие конструкции

Коментарии //

Операторные скобки {..} if (expr)

statement [else] statement

while (expr) statement

do { statement

} while(expr)

for (expr1; expr2; expr3) statement

foreach(array_expression as $value) statement foreach(array_expression as $key => $value) statement

foreach ($arr as $value) {

echo "Value: $value<br>\n";

}

$a = array (1, 12, 3, 8, 6, 17); $v = 5;

foreach ($arr as $key => $value) {

echo "Key: $key; Value: $value<br>\n";

break, continue – управляют ходом выполнения циклов

switch (var) {

case num0: statement; break; case num1: statement; break;

default: statement;

}

Подпрограммы

function foo ($arg_1, $arg_2, ..., $arg_n) { echo "Example function.\n";

return $retval;

}

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

function small_numbers() { return array (0, 1, 2);

}

list ($zero, $one, $two) = small_numbers();

В PHP4 добавлена поддержка функций с неопределенным числом аргументов func_num_args(), func_get_arg(), and func_get_args() .

PHP поддерживает классы

Эта поддержка не обеспечивает в полной мере все объектно-ориентрированного программирования, так как инкапсуляция и полиморфизм не реализованы.

Объявление: class Stack {

var $elements; // Items in our shopping cart var $count;

function Stack() { $count=0; }

function push ($num) { $this->elements[++$count] = $num;

}

function pop() {

return $this->elements[--$count];

}

}

}

Наследование рассматривается как расширение: class Dec extends Stack {

}

Создание объектов: $S = new Dec()

Важно! При создании объекта его конструктор вызывается автоматически, при этом конструктор класса предка автоматически не вызывается.

21. Технология PHP. Массивы, предопределенные переменные (массивы), ссылки, подпрограммы.

PHP – язык разработки для Интренет. Разработан независимым разработчиком Расмусом Ледорфом. Полная информация о языке и синтаксисе на сайте www.php.net/.

PHP можно установить в двух вариантах: как отдельный интерпретатор, работающий через интерфейс CGI, или как модуль веб-сервера, встроенный в сам сервер. В последнем случае становятся актуальными все преимущества PHP. Программа на языке PHP, как правило, не живет сама по себе, а применяется для обработки запросов пользователя. Даже если интерпретатор PHP встроен в сервер как модуль, с точки зрения самой пользовательской программы, она работает через CGI.

Ближайшим аналогом PHP является ASP, но технология ASP не реализована в среде Unix/Apache, где PHP постепенно завоевывает лидирующие позиции.

PHP является процедурным языком, его можно разделить на собственно язык и библиотеку функций. Существует большое количество инструментальных средств, библиотек для PHP, интерфейсы ко всем популярным

СУБД, почтовым протоколам, к разделяемой памяти, графическим файлам, архивам и множество других инструментов.

Основы языка PHP

Скрипт на PHP представляет собой файл, как правило, с суффиксом .phtml, .php3 или .php, который внутри выглядит как обычная страница на HTML. Отличие проявляется только в виде тега <?php ?>, содержащего скриптовые программы. Часто применяют сокращенную форму <? ?> или, для совместимости с визуальными средствами формирования страниц, <% %>. Внутри этих тегов располагается код на языке PHP. Вот тривиальный пример страницы:

<? include('header.html' ?> <h1>Hello WEB!</h1>

<? echo something?>

<? include('footer.html') ?>

Посетителю будет показан документ составленный из заголовка – файла header.html и завершения - footer.html, между ними будет просто включены в тот документ, что отдается сервером посетителю страницы. Таким образом можно отделить оформление страницы от ее наполнения.

Текст скрипта выполняется сверху вниз и справа налево, последовательно. Эта последовательность может быть изменена операторами цикла и условными операторами. Для в стандартный выходной поток используются функции: echo something; print(something)

Использование массивов

Объявление обычных одномерных массивов: $aChars[0] = ‘a’;

$aChars[1] = ‘d’;

$aChars = array (1, 12, 3, 8, 6, 17);

Массивы могут быть многомерными а также хеш-массивами. Объявление хэш массива

$a[0]=5; // Массив $a['old']=5; // Хэш-массив

Многомерные массивы могут быть построены на основе хеш-массива $$people = array(

"Petrov" => array( "old" => "34", "weight" => "79", "length" => "178"

),

"Kozlov" => array( "old" => "18", "weight" => "68", "length" => "172"

),

"Sokolov" => array( "old" => "20", "weight" => "84", "lenght" => "188"

)

);

echo $a["Kozlov"]["old"]; # will output 18 ?>

Ттип данных - хэш-массив (hash array). В принципе, это обычный массив, только индексом у него выступает строка, а не целое число. PHP также позволяет создавать многомерные массивы с произвольно пересекающимися индексами, как строками так и целыми индексами.

Подпрограммы

function foo ($arg_1, $arg_2, ..., $arg_n) { echo "Example function.\n";

return $retval;

}

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

function small_numbers() { return array (0, 1, 2);

}

list ($zero, $one, $two) = small_numbers();

В PHP4 добавлена поддержка функций с неопределенным числом аргументов func_num_args(), func_get_arg(), and func_get_args() .

22. Технология PHP. Интерфейс к базам данных.

Работа с БД

PHP поддерживает наиболее популярные СУБД, а также интерфейс ODBC, позволяющий использовать практически любые БД. Основным недостатком библиотек PHP доступа к ДБ – специализированность под конкретные СУБД. Т.е. функции доступа к БД имеют префикс, так например функции соединения с БД и исполнения запроса в различных СУБД: ORA_Open, ORA_Exec, mysql_connect, mysql_query, odbc_connect, odbc_exec, pg_Connect, pg_Exec. Рассмотрим работу с БД на примере MySQL.

Операции над БД можно разделить на две группы: манипулирования таблицами базы данных и самими данными. К первой группе относят:

Создание/удаление баз данных;

Создание/удаление таблиц баз данных; Во вторую группу входят:

добавление данных;

просмотр данных;

изменение значений данных;

удаление записей таблиц.

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

Для баз данных MySQL это делается с помощью функции:

int mysql_connect(string [hostname [:port] [:/path/to/socket] ] , string [username] , string [password] ); $host=”localhost”;

$host=”wed”; $password=”H;pz0237jen”;

$link =mysql_connect($host,$user,$password) { or die ("Could not connect"); }

Эта функция возвращает идентификатор соединения. Если соединение не было установлено возвращается 0. Идентификатор можно и не указывать в функциях, если в рамках данной программы происходит соединение только с одним сервером MySQL.

Закрыть соединения:

int mysql_close(int [link_identifier] ); mysql_close($link);

Для создание БД предназначена функция:

int mysql_create_db(string database name, int [link_identifier] ); if (mysql_create_db ("students",$link)) {

print ("Database created successfully\n"); } else {

printf ("Error creating database: %s\n", mysql_error ());

}

Установить текущую БД:

int mysql_select_db(string database_name, int [link_identifier] ); mysql_select_db ("students") { or die ("Could not select database");} Удалить БД:

int mysql_drop_db(string database_name, int [link_identifier] );

Создать, удалить таблицы в БД, можно с помощью SQL-запросов переданных в функцию: int mysql_query (string database_name, int [link_identifier] );

или

int mysql_db_query(string database, string query, int [link_identifier] );

при этом запрос query может быть вида “CREATE TABLE…”, “DROP TABLE…”, “INSERT…”, “UPDATE…”, “SELECT…”,

и т.д.

В зависимости от выполняемого запроса команда возвращает различные объекты: TRUE или FALSE -результат выполнения запроса CREATE, INSERT, UPDATE и т.п.

$query = “CREATE TABLE()”

if (mysql_create_db ($query, $link)) {

print ("Table created successfully\n");

} else {

printf ("Error creating table: %s\n", mysql_error ());

Для запросов типа DELETE, INSERT, REPLACE, UPDATE можно получить количество обработанных записей. Эту возможность реализует функция

int mysql_affected_rows(int [link_identifier] );

$SQL=”UPDATE student SET GroupID=$newGroupID WHERE AvgBall=3”; $resut = mysql_query($SQL,$link);

printf( “Обработано %d записей\n”, mysql_affected_rows($link ));