Зміст
Передмова 5
1 Вступ 6
1.1 Поняття Web-сервісу 6
1.2 Архітектура Web-серверів 11
1.3 Мова PHP 12
1.4 Основи HTML 13
1.5 Поняття URL-адреси 15
1.6 MySQL - СУБД для Інтернету 16
1.7 Інтеграція сценаріїв з базами даних 17
2 Інтеграція PHP з Web-сторінками 18
2.1 Використання PHP 18
2.2 Вбудовування PHP в HTML 22
2.3 Додавання динамічного вмісту 24
2.4 Доступ до змінних форми 26
3 Основний синтаксис РНР 30
3.1 Базовий синтаксис 30
3.2 Типи даних 31
3.3 Константи 34
3.4 Операції 35
3.5 Керуючі структури 40
4 Зберігання та відновлення даних 46
4.1 Огляд обробки файлів 46
4.2 Відкриття файлів 47
4.3 Читання з файлів і запис у файли 49
4.4 Інші файлові функції 51
4.6Блокування файлів 54
5 Використання масивів 57
5.1Чисельно індексовані масиви 57
5.2Асоціативні масиви 58
5.3Багатомірні масиви 58
5.4Сортування масивів 61
5.5Інші функції обробки масивів 65
6 Багатократне використання коду 69
та створення функцій 69
6.1 Шаблони Web- Сайту 69
6.2 Завантаження шаблонів 72
6.3 Використання функцій у РНР 75
6.4 Область дії 80
7 Об'єктно-орієнтоване програмування на РНР 83
7.1 Принципи ООП 83
7.2 Класи й об'єкти 84
7.3 Створення класів та екземплярів класів 85
7.4 Написання коду класу 88
7.5 Поліморфізм 90
7.6 Спадкування 91
8 Проектування баз даних для використання в Web 93
8.1 Концепції реляційних баз даних 93
8.2 Проектування баз даних для Web 95
8.3 Архітектура баз даних для Web 97
8.4 Створення баз даних користувачів 98
8.5 Система повноважень MySQL 99
9 Доступ до бази даних MySQL з Web за допомогою РНР 103
9.1 Встановлення з'єднання 103
9.2 Вибір бази даних 105
9.3 Отримання результату запита 106
9.4 Інші PHP-інтерфейси роботи з базами даних 110
10 Додаткові можливості MySQL 113
10.1 Забезпечення безпеки баз даних MySQL 113
10.2 Одержання додаткової інформації про бази даних 115
10.3 Оптимізація проектування 120
121
10.4Резервне копіювання баз MySQL 121
СПИСОК ЛІТЕРАТУРИ 124
Цей конспект лекцій представляє собою керівництво зі спільного застосування РНР та MySQL для розробки високоефективних та інтерактивних Web-сайтів з динамічним вмістом.
Перевагою цього конспекту лекцій є орієнтація на вирішення реальних задач, що втілено у великій кількості типових прикладів, які часто виникають при розробці.
У конспекті лекцій широко розглядається формальний синтаксис та семантика мови РНР, основи побудови додатків баз данних та особливості застосування об’єктно-орієнтованної методології при розробці додатків для Web.
У лекції розглядаються такі питання:
Поняття Web-сервісу;
Архітектура Web-серверів;
Мова PHP;
Основи HTML;
Поняття URL- адреси;
MySQL - СУБД для Інтернету;
Інтеграція сценаріїв з базами даних.
Уперше термін "Web Services" з'явився в 2000 році при оголошенні інформації про нову технологію Microsoft.NET. У цей час Web-сервіси перебувають у стадії інтенсивного розвитку. Всі найбільші виробники, включаючи Sun, Microsoft, IBM й BEA, поєднуються для виробітку стандартів, проявляючи зацікавленість у їхньому швидкому прийнятті, розробляють і випускають інструментальне ПЗ, що дозволяє створювати Web-сервіси.
Web-сервіси базуються на застосуванні відкритим, затверджуваним консорціумом W3C, стандартах і протоколах, ключовими з яких є наступні:
- SOAP (Simple Object Access Protocol) — протокол доступу до простих об'єктів, тобто механізм для передачі інформації між вилученими об'єктами на базі протоколу HTTP і деяких інших Інтернет-протоколів;
- WSDL (Web Services Description Language) — мова опису Web-сервісів;
- UDDI (Universal Description, Discovery and Integration) — універсальний опис, виявлення й інтеграції (протокол пошуку сервісів в Інтернеті).
Ціль технології Web-сервісів полягає в тому, щоб перебороти обмеженість сучасних інформаційних технологій, розірвавши тверді фіксовані зв'язки між додатками й компонентами додатків, замінивши її більш гнучкими слабкими зв'язками. Модель зі слабкими зв'язками, що лежить в основі Web-сервісів, не залежить від того, чи застосовується вона для з'єднання компонентів у рамках організації або для організації комбінованого сервісу, що використовує функції від багатьох компаній.
Ухвалюючи рішення щодо вибору базової технології, необхідно враховувати цілий ряд факторів. Аргументами на користь технології Web-сервісів будуть вимоги масштабованості, відкритості, можливості доступу ззовні будь-якому клієнтові й ін. На ефективність розробки вплине й вибір інструментальних засобів і методології розробки.
Істотну роль у розробці програмних систем грає створення архітектури системи як проектування на найвищому рівні. На думку провідних IT-компаній й аналітиків (найбільш відомими з них є IBM, Microsoft, Sun Microsystems, BEA, SAP, Oracle, Gartner Group, Stencil Group, International Data Corp.), важливими й перспективними напрямками в розвитку інформаційних систем і ПЗ є архітектури, орієнтовані на сервіси (Service Oriented Architecture - SOA). При цьому основний акцент ставиться на SOA, що орієнтована на Internet й intranet, тобто на архітектуру веб-сервісів (Web Services Architecture - WSA).
Архітектура, орієнтована на сервіси (SOA), має наступні характерні риси:
Архітектура є розподіленою. Функціональні модулі (системи) можуть бути розподілені по безлічі обчислювальних систем і здатні до взаємодії з використанням локальних або глобальних мереж.
Інтерфейс функціональних модулів такий, що використання модулів не залежить від технології або платформи, у рамках якої вони реалізовані.
Можливий динамічний пошук і підключення потрібних функціональних модулів.
Архітектура базується на загальноприйнятих галузевих стандартах.
Основу архітектури, орієнтованої на сервіси, становить взаємодія трьох учасників:
постачальника сервісу;
споживача сервісу;
реєстру сервісів.
Ця взаємодія представлена на рисунку 1.1

Рисунок 1.1 - Компоненти архітектури SOA
Взаємовідносини учасників включають наступні основні аспекти:
публікація сервісу;
пошук сервісу;
підключення й використання.
Для реалізації SOA необхідні три типи угоди:
Транспортна угода: про формати й протоколи взаємодії.
Угода про опис функціональності сервісу, у вигляді, придатному для автоматичної генерації коду, що визначає процес взаємодії між клієнтом і постачальником сервісу.
Угода про спосіб виявлення сервісу.
Архітектура веб-сервісів є однією з реалізацій SOA. Поняття архітектури, орієнтованої на сервіси, склалося в ході розвитку концепції веб-сервісів. Однак існують й інші підходи до реалізації SOA: Java RMI (від Sun Microsystems), CORBA (від консорціуму OMG), DCOM (від Microsoft), DCE (запропонований асоціацією Open Group).
Стандартизацією архітектури веб-сервісів займаються робочі групи комітету W3C. Вони пропонують наступне визначення поняття "веб-сервіс": "веб-сервіс - це реалізована програмними засобами система для підтримки міжмашинної взаємодії через мережу. Інтерфейс сервісу описується мовою, що читається машиною, наприклад, WSDL. Інші системи взаємодіють із веб-сервісом способом, зазначеним у його описі, використовуючи повідомлення в стандарті SOAP, передані з використанням HTTP й XML й у сполученні з іншими стандартами, що відносяться до Web".
Фізично Web-сервіс являє собою фрагмент програмного забезпечення, що називається "агентом". Агент здатний передавати й приймати повідомлення, він реалізує функціональність сервісу. Існує різниця між агентом і сервісом - той самий сервіс може бути забезпечений різними агентами.
Механізм обміну повідомленнями визначається в описі сервісів (Web Services Description), що являє собою специфікацію інтерфейсу сервісу й охоплює формати повідомлень, типи даних, транспортні протоколи, способи серриалізації, що використовуються при обміні між агентами замовника й постачальника послуг. Крім того, опис сервісу містить вказівку на одну або кілька точок у мережі (endpoint), звідки доступний постачальник.
Технологія Universal Description, Discovery and Integration (UDDI) припускає ведення реєстру веб-сервісів. Підключившись до цього реєстру, споживач зможе знайти веб-сервіси, які задовольняють його потребам. Технологія UDDI дає можливість пошуку й публікації потрібного сервісу, як людиною, так і програмою-клієнтом.
Стек технологій, що реалізує архітектуру веб-сервісів, представлений на рисунку 1.2.

Рисунок 1.2 - Стек технологій архітектури веб-сервісів
Концепція веб-сервісів має на увазі, що окремі веб-сервіси мають певну обмежену функціональність. А для вирішення складних завдань потрібно використовувати функціональність декількох сервісів. Тому в ході розвитку архітектури веб-сервісів виникли поняття "композиція Web-сервісів" (Web-services composition) і "потік Web-сервісів" (Web-services flow), останнім часом замість цих понять використовують відповідно "оркестровка" (Web Service Choreography) і "хореографія" (Web Service Choreography) веб-сервісів. Ці поняття відбивають взаємодію сервісів і послідовність їхнього виконання. Тобто, додатки, побудовані з використанням веб-сервісів, розглядають як додатки, засновані на потоках робіт (Workflow-based applications).
При розгляді додатків, заснованих на потоках робіт, виділяють три рівні як це показано на рисунку 1.3.

Рисунок 1.3 - Додаток, заснований на потоках робіт
Веб-сервіси є функціональними блоками й відповідають одиницям робіт у термінах потоків робіт. Способи знаходження, підключення, використання одиниць роботи (тобто, веб-сервісів) забезпечуються стеком технологій, що був описаний вище й представлений на малюнку 2.
Веб-сервіси широко використовуються для інтеграції, у тому числі для взаємодії бізнес-процесів компаній-партнерів. Це підвищує важливість механізму організації веб-сервісів.
Архітектура веб-сервісів (і більш загальна концепція - архітектура, орієнтована на сервіси) є напрямком, що динамічно розвивається, в інформаційних системах і ПЗ. Наявний набір галузевих стандартів уже сьогодні дозволяє вирішувати завдання інтеграції (у тому числі, навіть на рівні бізнес-процесів).
PHP - це мова обробки гіпертексту (HTML), використовується на стороні сервера (server side scripting language), конструкції якого вставляються в HTML-текст. В 2003 році вийшла версія PHP 5.0 на базі машини Zend Engine 2 (фірма Zend Technologies Ltd), що дає можливості для створення повномасштабних додатків, починаючи з п'ятої версії її можна називати об’єктно-орієнтованою. PHP є відкритим програмним продуктом, що означає його безкоштовність і можливість створювати свої власні розширення мови.
Мова PHP використовується приблизно на 52% з 14,5 мільйонів сайтів, що працюють під Apache, що у свою чергу є найпоширенішою в Інтернеті (за різними оцінками близько 70%), популярність якої швидко росте.
PHP є наймолодшою, перспективною і швидкою у розвитку з мов програмування для Інтернет, частка її використання в порівнянні з іншими мовами швидко росте. Її основні переваги: широка підтримка різних технологій, сумісність із серверами, базами даних, простота й безкоштовність.
PHP дозволяє відокремити HTML-текст від виконуваної частини, за рахунок чого можна домогтися значного зниження витрат часу на розробку проекту. У багатьох випадках вдається відокремити програмну частину проекту від розробки сторінок на HTML, що полегшує завдання й дизайнерові, і програмістові. Майже завжди виявляється, що швидкість просування проектів, створюваних на PHP буде вище, ніж при використанні інших мов програмування.
Можливості PHP
підтримувані технології: платформи Win32 (9x/NT/2000/XP), UNIX, OS/2, QNX, MacOS, BeOS, OCX;
сумісність із серверами: Apache (Win32, UNIX), phttpd, fhttpd, thttpd, ISAPI(Zeus, IIS), NSAPI, Roxen/Caudium, AOLServer;
підтримка технологій COM, XML, Java, CORBA, WDDX, Macromedia Flash;
розвинена функціональність для роботи з мережними з'єднаннями;
підтримує понад 20 баз даних і має розвинену функціональність для роботи з ними;
можливість створення повноцінних об’єктно-орієнтованих додатків;
порівняно простий синтаксис і зручність у практичному використанні;
безкоштовність;
відкритість коду, завдяки якій можна створювати власні розширення мови
HTML (HyperText Markup Language) - мова розмітки гіпертексту - призначена для створення Web- Сторінок.
Під гіпертекстом у цьому випадку розуміється текст, пов'язаний з іншими текстами покажчиками-посиланнями.
HTML являє собою досить простий набір кодів, які описують структуру документа. HTML дозволяє виділити в тексті окремі логічні частини (заголовки, абзаци, списки й т.д.), помістити на Web-сторінку підготовлену фотографію або малюнок, організувати на сторінці посилання для зв'язку з іншими документами. HTML не задає конкретні й точні атрибути форматування документа. Конкретний вид документа остаточно визначає тільки програма-браузер на комп'ютері користувача Інтернету.
HTML також не є мовою програмування, але web-сторінки можуть містити в собі убудовані програми-скрипти на мовах Javascrіpt і Vіsual Basіc Scrіpt і програми-апплети мовою Java.
Основними компонентами HTML є:
Тег (tag). Тег HTML це компонент, що командує Web-браузеру виконати певне завдання типу створення абзацу або вставки зображення.
Атрибут (або аргумент). Атрибут HTML змінює тег. Наприклад, можна вирівняти абзац або зображення усередині тегу.
Значення. Значення привласнюються атрибутам і визначають внесені зміни. Наприклад, якщо для тегу використовується атрибут вирівнювання, то можна вказати значення цього атрибута. Значення можуть бути текстовими, типу left або rіght, а також числовими, як наприклад ширина й висота зображення, де значення визначають розмір зображення в пікселях.
Теги являють собою зарезервовані послідовності символів, що починаються з < (знака менше) і що закінчуються > (знаком більше). Закриття тегу відрізняється від відкриття тільки наявністю символу '/'.
Припустимо, у нас є гіпотетичний атрибут форматування тексту, керований кодом <X>, і ми хочемо застосувати його до слів "Це мій текст". HTML-послідовність кодів і власне тексту буде виглядати так:
<X>Це мій текст</X>
Теги можуть вкладатися один в інший ієрархічно, але без перетинань, тобто припустиме вкладення виду <teg1><teg2></teg2> </teg1>, але не <teg1><teg2> </teg1></teg2>. Дія вкладених тегів поєднується. Наприклад, якщо усередину тегу, що створює жирне накреслення шрифту, вкладений тег курсиву, то в результаті вийде жирний курсив.