- •1. Основні технології розробки web-додатків
- •1.1 Протокол http
- •Основні технології розробки web-додатків
- •1.3 Короткі підсумки
- •2 Структура html-документа
- •2.1. Елементи мови html
- •2.2 Структура html-документа
- •2.2.1.Початок
- •2.2.2 Тіло документа
- •Заголовки
- •Нижче на малюнку показаний результат використання наступних заголовків:
- •Списки в html
- •2.3 Використання графіки в html
- •2.4 Таблиці
- •Атрибут border. Значення цього атрибута визначає як будуть виглядати рамки таблиці. Якщо атрибут не заданий або його значення дорівнює нулю, то таблиця не матиме рамок.
- •2.5 Html-форми Форми використовуються в www для передачі інформації від клієнта до сервера.
- •3 Каскадні таблиці стилів css
- •3.1 Загальні відомості про css
- •3.2 Додавання стилю на веб-сторінку
- •3.2.1. Таблиця пов'язаних стилів
- •3.2.2 Таблиця глобальних стилів
- •3.2.3 Внутрішні стилі
- •3.3 Синтаксис css
- •3.3.1 Властивості css
- •3.3.2 Селектори тегів
- •3.3.3 Селектори класів
- •3.3.4 Селектори-ідентифікатори
- •3.3.5 Контекстні селектори
- •3.3.6 Сусідні селектори
- •3.3.7 Дочірні селектори
- •Селектор зі значенням атрибута – встановлює стиль елемента в тому випадку, якщо задано певне значення зазначеного атрибута. Синтаксис застосування наступний.
- •Наприклад:
- •3.3.9 Універсальний селектор
- •3.4 Псевдокласи
- •3.4.2 Короткі підсумки
- •4 Типи і структури даних в javascript
- •Скрипт в html документі
- •4.2 Змінні та літерали
- •4.2.1 Літерали
- •4.3 Оператори JavaSscript
- •4.3.2 Оператор обробки рядків
- •4.3.3 Оператор typeof Аргументом оператора є змінна або вираз. Оператор повертає рядок, що описує тип аргументу(див. Табл. 4.4).
- •4.3.4 Умовний оператор (Оператор If)
- •4.3.5 Оператор перемикання (switch)
- •4.3.6 Оператори циклу
- •4.4 Масиви
- •Метод reverse () – застосовується для зміни на протилежний порядок елементів масиву всередині масиву. Припустимо, масив натуральних чисел впорядкований по зростанню:
- •Впорядкуємо його по спаданню:
- •4.5.2 Інструкція return
- •4.5.3 Виклик функції
- •4.6.2 Константи
- •4.6.3 Математичні функції.
- •4.6.4 Приклад. Генератор випадкових чисел
- •4.7 Контрольні питання
- •Події та обробники подій
- •5.1.1 Спливання подій в dhtml
- •5.1.2 Стандартні події dhtml.
- •Способи зв'язування подій
- •5.2.1 Введення подій в якості атрибутів.
- •5.2.2 Обробники подій як функції.
- •5.2.3 Динамічне зв'язування подій у сценарії.
- •5.2.5 Атрибути for і event.
- •Об'єкти браузера
- •Об'єктна модель браузера
- •Об'єкт window (Операції з вікнами)
- •Об'єкт navigator (властивості браузера)
- •Об'єкт location (Інформація про документ і вікна браузера)
- •Об'єкт history (Переходи між Web-сторінками )
- •Робота з діалоговими вікнами
- •Управління документом
- •Об'єктна модель документа
- •7.1.1 Сімейства, властивості і методи
- •Дерево документа (Document Tree)
- •Переміщення по Дереву Документа.
- •Динамічний вміст
- •8.1.1 Найбільш популярні моделі даних
- •9.3.1 Поділ інструкцій.
- •9.3.2 Коментарі.
- •9.3.3 Змінні, константи й оператори
- •9.3.6 Типи даних
- •Висновок
- •Керуючі конструкції рнр
- •Умовні оператори
- •// Ця програма надрукує всі парні цифри
- •{// Друкуємо цифру, якщо вона парна
- •Оператори передачі управління
- •Оператори включення
- •10.5 Висновок
- •Функції і масиви в php
- •Функції, визначені користувачем
- •11.1.1 Повернення значень функцією.
- •Рекурсивні функції.
- •11.1.3 Функції-змінні.
- •11.1.4 Побудова бібліотек функцій.
- •11.2.1 Операції з масивами.
- •11.2.2 Сортування масивів.
- •Sort_regular – порівнювати елементи масиву звичайним чином; sort_numeric – порівнювати елементи масиву як числа; sort_string – порівнювати елементи масиву як рядки.
- •11.2.3 Сортування масиву за ключами.
- •11.2.4 Сортування за допомогою функції, заданої користувачем.
- •Ми застосували нашу власну функцію сортування до всіх елементів масиву.
- •11.2.5 Застосування функції до всіх елементів массиву.
- •11.2.6 Виділення підмасива
- •Висновок
- •12 Строкові функції php
- •12.1 Функції пошуку в тексті (substr(), strpos(), strrpos(), strstr(), strchr(), stristr(), strrchr(), substr_count(), strspn(), strcspn())
- •12.2 Функції strlen(), chr() і ord()
- •12.3 Trim-функції (функції видалення символів відступу) trim (), ltrim (), rtrim (), chop ()
- •12.4 Функції форматного виведення. Специфікатори перетворення printf (), sprintf (), sscanf ().
- •12.5 Функції перетворення кодування
- •12.6 Функції роботи з бінарними даними pack () unpack ()
- •12.7 Функції роботи з блоками тексту (wordwrap (), str_replace (), substr_replace (), strtr (), stripslashes (), stripcslashes (), addslashes (), addcslashes (), quotemeta (), strrev ())
- •12.8 Функції об'єднання / поділу рядків (str_repeat (), str_pad (), chunk_split (), strtok (), explode (), implode (), join ())
- •12.9 Функции сравнения строк (strcmp(), strncmp(), strcasecmp(), strncasecmp(), strnatcmp(), strnatcasecmp(), similar_text(), levenshtein())
- •12.10 Функції роботи з url (parse_url (), parse_str (), rawurlencode (), rawurldecode (), base64_encode (), base64_decode ())
- •12.11 Функції перетворення регістру (strtolower (), strtoupper (), ucfirst (), ucwords ())
- •12.13 Функція htmlspecialchars
- •13 Робота з файлами
- •13.1 Відкриття і закриття файлів
- •13.2 Читання з файлів і запис у файли
- •13.2.1 Читання з файлів.
- •13.2.2 Запис в файли
- •13.5 Переміщення по файлам
- •13.6 Робота з каталогами
- •13.7 Завантаження файлу на сервер
- •14.1 Авторизація доступу
- •14.2 Механізм сесій
- •14.3 Налаштування сесій
- •14.4.1 Відкриття сесії
- •14.4.2 Створення сесії
- •14.4.3 Реєстрація змінних сесії
- •14.4.4 Видалення змінних сесії
- •14.5 Безпека
- •14.6 Висновок
- •15.1 Проектування
- •15.2 Система адміністрування контенту
- •15.2.1 Вимоги до системи адміністрування контенту (cms).
- •15.2.2 Адміністрування списку користувачів.
- •15.2.3 Вхід на сторінку адміністрування
- •15.2.4 Відкриття списку користувачів.
- •15.2.5 Редагування запису користувача.
- •15.2.6 Видалення користувача
1. Основні технології розробки web-додатків
1.1 Протокол http
Всесвітня павутина (World Wide Web) – це розподілена система, що надає доступ до пов'язаних між собою документів, розташованих на різних комп'ютерах, підключених до Інтернету.
Обмін інформацією в WWW здійснюється за допомогою гіпертекстових файлів. Гіпертекстовий файл – це звичайний текстовий файл, заповнений елементами розмітки, відповідно до мови гіпертекстової розмітки HTML (HyperText Markup Language). Після того, як HTML-файл стає доступний веб-серверу, його починають називати "веб-сторінкою". Набір веб-сторінок утворює веб-сайт. В гіпертекст веб-сторінок додаються гіперпосилання. Гіперпосилання допомагають користувачам Всесвітньої павутини легко переміщатися між ресурсами (файлами) незалежно від того, знаходяться ресурси на локальному комп'ютері або на віддаленому сервері. Гіперпосилання в Веб, засновані на технології URL.
В цілому можна зробити висновок, що Всесвітня павутина стоїть на "трьох китах":
мова гіпертекстової розмітки документів HTML (HyperText Markup Language) [];
універсальний спосіб адресації ресурсів в мережі URI (Universal Resource Identifier) [];
протокол обміну гіпертекстової інформацією HTTP (HyperText Transfer Protocol) [].
Останнім часом, крім HTML використовуються і більш сучасні технології розмітки: XHTML і XML. XML (eXtensible Markup Language) позиціонується, як фундамент для інших мов розмітки. Для поліпшення візуального сприйняття Веб, стала широко застосовуватися технологія CSS, яка дозволяє задавати єдині стилі оформлення для безлічі веб-сторінок.
Популярна концепція розвитку мережі Інтернет – створення семантичної павутини. Семантична павутина – це надбудова над існуючою Мережею, яка cтворена для того, чтоб зробити розміщену в ній інформацію зрозумілішою для комп'ютерів.
HTTP (англ. HyperText Transfer Protocol – «протокол передачі гіпертексту») – протокол прикладного рівня передачі даних (спочатку – у вигляді гіпертекстових документів). Основою HTTP є технологія «клієнт-сервер», тобто передбачається існування: споживач (клієнт) – ініціюють з'єднання і надсилають запит; постачальник (сервер) – очікують з'єднання для отримання запиту, виробляють необхідні дії і повертають назад повідомлення з результатом.
Основним об'єктом маніпуляції в HTTP є ресурс, на який вказує URI (англ. Uniform Resource Identifier) в запиті клієнта. Зазвичай такими ресурсами є файли, що зберігаються на сервері, але ними можуть бути логічні об'єкти або щось абстрактне. Особливістю протоколу HTTP є можливість вказати в запиті і відповіді спосіб представлення одного і того ж ресурсу за різними параметрами: формату, кодуванні, мови і т.д. Саме завдяки способу кодування, повідомленнями клієнт і сервер можуть обмінюватися двійковими даними, хоча даний протокол є текстовим. Спрощена схема обміну даними, між клієнтом і сервером приведена на рисунку 1.1.
Рисунок 1.1 - Спрощена схема обміну даними між клієнтом і сервером
Кожне HTTP-повідомлення складається з трьох частин, які передаються в зазначеному порядку:
Стартовий рядок (англ. Starting line) – визначає тип повідомлення.
Заголовки (англ. Headers) – характеризують тіло повідомлення, параметри передачі та інші відомості.
Тіло повідомлення (англ. Message Body) – безпосередньо дані повідомлення. Обов'язково повинно відділятися від заголовків символом нового рядка.
Заголовки і тіло повідомлення можуть бути відсутніми, але стартовий рядок є обов'язковим елементом, так як вказує на тип запиту/відповіді.
HTTP – запит. Запит – це повідомлення, що посилається клієнтом серверу.
Стартовий рядок запиту виглядає так:
Метод URI HTTP/Версія – для інших версій.
Метод (англ. Method) – назва запиту, одне слово великими літерами.
URI – визначає шлях до запитуваного документу.
Версія (англ. Version) – пара розділених крапкою арабських цифр. Наприклад: 1.0.
Наприклад: GET http://www.w3.org/pub/WWW/TheProject.html HTTP/1.1
Метод. В поле Метод вказується метод, який повинен бути застосований до ресурсу, ідентифікованому URI-Запиту. Назви методів чутливі до регістру. В даний час використовуються наступні методи: GET, HEAD, PUT, POST, DELETE, LINK, UNLINK, OPTIONS, TRACE, CONNECT. Існуючий список методів може бути розширений:
GET. Використовується для запиту вмісту зазначеного ресурсу. За
допомогою методу GET можна також почати будь-який процес. У цьому випадку в тіло листа у відповідь слід включити інформацію про хід виконання процесу. Клієнт може передавати параметри виконання запиту в URI цільового ресурсу після символу «?»: GET / path / resource? Param1 = value1 & param2 = value2 HTTP / 1.1. Крім звичайного методу GET, розрізняють ще умовний GET і частковий GET. Умовні запити GET містять заголовки If-Modified-Since, If-Match, If-Range і подібні. Часткові GET містять в запиті Range. Порядок виконання подібних запитів визначено стандартами окремо.
HEAD. Аналогічний методу GET, за винятком того, що у відповіді сервера відсутнє тіло. Запит HEAD зазвичай застосовується для вилучення метаданих, перевірки наявності ресурсу (валідація URL) і щоб дізнатися, чи не змінився він з моменту останнього звернення.
POST. Застосовується для передачі призначених даних заданому ресурсу. Наприклад, в блогах відвідувачі зазвичай можуть вводити свої коментарі до записів в HTML-форму, після чого вони передаються серверу методом POST і він поміщає їх на сторінку. При цьому передані дані (в прикладі з блогами – текст коментаря) включаються в тіло запиту. Аналогічно за допомогою методу POST зазвичай завантажуються файли на сервер.
PUT. Застосовується для завантаження вмісту запиту на вказаний в запиті URI. Якщо по заданому URI не існувало ресурсу, то сервер створює його і повертає статус 201 (Created). Якщо ж був змінений ресурс, то сервер повертає 200 (Ok) або 204 (No Content).
Фундаментальна відмінність методів POST і PUT полягає в розумінні призначень URI ресурсів. Метод POST передбачає, що за вказаною URI буде проводитися обробка переданого клієнтом вмісту. Використовуючи PUT, клієнт передбачає, що завантажуваний вміст, відповідає що знаходиться за даним URI ресурсу.
PATCH. Аналогічно PUT, але застосовується тільки до фрагменту ресурсу.
DELETE. Видаляє зазначений ресурс.
TRACE. Повертає отриманий запит так, що клієнт може побачити, яку інформацію проміжні сервера додають або змінюють в запиті.
LINK. Встановлює зв'язок зазначеного ресурсу з іншими.
UNLINK. Прибирає зв'язок зазначеного ресурсу з іншими.
CONNECT. Перетворює з'єднання запиту в прозорий TCP / IP тунель, зазвичай щоб сприяти встановленню захищеному SSL з'єднанню через не зашифрований проксі.
OPTIONS. Використовується для визначення можливостей веб-сервера або параметрів з'єднання для конкретного ресурсу. У відповідь сервера слід включити заголовок Allow зі списком підтримуваних методів. Також в заголовки відповіді може включатися інформація про підтримуванні розширення. Для того щоб дізнатися можливості всього сервера, клієнт повинен вказати в URI зірочку - «*». Запити «OPTIONS * HTTP / 1.1» можуть також застосовуватися для перевірки працездатності сервера (аналогічно «пингования») і тестування на предмет підтримки сервером протоколу HTTP версії 1.1.
Заголовки запиту. Заголовки HTTP – це рядки в HTTP-повідомленні, що містять розділену двокрапкою пару параметр-значення. Заголовки повинні відділятися від тіла повідомлення хоча б одним порожнім рядком.
Приклади заголовків:
Server: Apache/2.2.11 (Win32) PHP/5.3.0
Last-Modified: Sat, 16 Jan 2010 21:16:42 GMT
Content-Type: text/plain; charset=windows-1251
Content-Language: ru
В наведеному вище прикладі кожен рядок являє собою один заголовок. При цьому те, що знаходиться до першої двокрапки, називається ім'ям (англ. Name), а що після неї – значенням (англ. Value).
Всі заголовки поділяються на чотири основні групи:
General Headers (рос. Основні заголовки) – повинні включатися в будь-яке повідомлення клієнта і сервера.
Request Headers (рос. Заголовки запиту) – використовуються тільки в запитах клієнта.
Response Headers (рос. Заголовки відповіді) – тільки для відповідей від сервера.
Entity Headers (рос. Заголовки суті) – супроводжують кожну сутність повідомлення.
Саме в такому порядку рекомендується посилати заголовки одержувачу. Найбільш часто в запитах використовуються наступні заголовки:
Content-type – визначає тип переданих даних.
Приклад: Content-Type: text/html; charset=windows-1251
User-Agent - Поле заголовка User-Agent містить інформацію про користувача-агента, що послав запит. Дане поле використовується для статистики, простежування помилок протоколу, і автоматичного розпізнавання користувальницьких агентів.
Приклад: User-Agent: Mozilla/3.0
Referer - Рядок, що відображає інтернет-адрес (URL) документа, що містить посилання, по якій користувач знайшов даний документ.
Мова розмітки HTML дозволяє задавати необхідні значення заголовків HTTP всередині <HEAD> за допомогою тега <META>. При цьому назва заголовка вказується в атрибуті http-equiv, а значення – в content. Майже завжди виставляється значення заголовка Content-Type з зазначенням кодування, щоб уникнути проблем з відображенням тексту браузером. Так само не зайвим є вказівка значення заголовка Content-Language:
<Html>
<Head>
<Meta http-equiv = "Content-Type" content = "text / html; charset = windows-1251">
<Meta http-equiv = "Content-Language" content = "ru">
HTTP відповідь. Структура відповіді. Після отримання та інтерпретації запиту, сервер посилає відповідь, структура якого аналогічна структурі запиту (стартовий рядок, заголовки, тіло відповіді).
Стартовий рядок. Стартовий рядок відповіді складається з версії протоколу, за якою слідує цифровий код статусу і асоційована з ним текстова пропозиція. Всі елементи стартового рядка розділяються пробілами.
Наприклад, HTTP/1.1 200 OK
Код статуса. Елемент Код статусу – 3-х цифровий цілий код, що ідентифікує результат спроби інтерпретації і задоволення запиту. Код статусу призначений для того, щоб його використовувала машина, а наступна за ним текстова пропозиція призначена для людини.
Перша цифра. Коду статусу призначена для визначення класу відповіді. Останні дві цифри не виконують ніякої категоризаційної ролі. Існує 5 значень для першої цифри:
1xx: Інформаційний – не використовується, але зарезервований для використання в майбутньому.
2xх: Успіх – запит був цілком отриманий, зрозумілий, і прийнятий до обробки.
3xx: Перенаправлення – клієнту варто почати подальші дії для успішного виконання запиту. Необхідна додаткова дія іноді може бути виконано клієнтом без взаємодії з користувачем, але настійно рекомендується, щоб це мало місце тільки в тих випадках, коли метод, що використовується в запиті байдужий (GET або HEAD).
4xx: Помилка клієнта – запит, що містить неправильні синтаксичні конструкції, не може бути успішно виконаний. Клас 4xx призначений для опису тих випадків, коли помилка була допущена з боку клієнта.
5xx: Помилка Сервера – система не може дати відповідь на коректно поставлений запит. У цих випадках сервер або знає, що він припустився помилки, або не здатний обробити запит. За винятком відповідей на запити HEAD, сервер посилає опис помилкової ситуації і те, чи є цей стан тимчасовим або постійним, в тілі відповіді.
Деякі значення кодів статусу і відповідні їм текстові пропозиції наведені на прикладі:
Статус-Код = "100"; Продовжувати, Continue
"101"; Перемикання протоколів, Switching Protocols
"200"; OK
"201"; Created
"202"; Accepted
"203"; Provisional Information |
"204"; No Content |
"300"; Multiple Choices |
"301"; Moved Permanently |
"302"; Moved Temporarily |
"303"; Method |
"304"; Not Modified |
"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 |
Код-Розширення
Заголовки
відповіді.
Поля
заголовка відповіді дозволяють серверу
передати додаткову інформацію про
відповідь, яка не може бути внесені
в Стартовий
рядок. Ці поля заголовків не призначені
для передачі інформації про зміст
відповіді,
Найбільш часто у відповідях використовуються наступні заголовки:
Date – вказує браузеру дату і час відправки документа.
Приклад: Date: Mon, 10 Jan 2011 11:22:23 GMT
Server – вказує браузеру тип сервера і іншу інформацію про сервісне програмне забезпечення. Приклад: Server: Apache/1.3.9 (Unix) PHP/5.0
Location – цей заголовок визначає, що браузер повинен негайно перейти за вказаною адресою, не чекаючи тіла документа.
Приклад: Location: http://www.myhtml/index.html
