<?php class A { functіon example() { echo "Це первісна функція A::example().<br>"; }} class B extends A { functіon example() { echo "Це перепевна функція B::example().<br>"; A::example(); }} $b = new B; $ b-b->example(); ?>
Збережіть отриманий код. Проаналізуйте відмінності між викликом методів базового та дочірнього класів.
5 Іноді виникає необхідність виконати ініціалізацію об'єкта - привласнити його властивостям первісні значення. Створіть у файлі init.php клас з ім'ям Coor, що містить дві властивості: ім'я людини й місто його проживання. Написати метод (функцію), що буде виконувати ініціалізацію об'єкта, наприклад Іnіt().
6 Внесіть зміни до попереднього файлу таким чином, щоб ініціалізація об0єкта викликалася автоматично при створенні об’єкту класу. Збережіть отриманий результат.
МЕТА – познайомитися з основами роботи з базами даних в РНР
Порядок виконання завдання:
1 Для створення власної бази даних в MySQL необхідно спочатку запустити сервер MySQL. Потім необхідно запустити інтернет браузер і в адресному рядку вввести: "http://localhost/phpmyadmin/".
Результат звернення за цією адресою представлений на малюнку 10.1.

Малюнок 10.1 - Виведення головної сторінки додатку phpMyAdmin
2 Впевнившись, що сервер запущений і працює нормально, створіть базу даних для зберігання інформації щодо виставлених на продаж автомобілів. Для цього у текстовому полі впишіть назву БД і натисніть кнопку "Создать". База даних повинна містити таблицю, тому створюємо таблицю у вікні, зображеному на малюнку (мал.10.2).

Малюнок 10.2 - Вікно для створення таблиці БД
3 Задайте ім'я таблиці і загальну кількість стовпчиків. Натисніть кнопку "Пошел". Перший стовпчик є ключем для пошуку необхідного запису, другий – містить інформацію щодо марки авто, третій – про рік випуску, четвертий – колір, п’ятий – тип кузову, шостий – вартість, сьомий – додатково встановлене устаткування. Для кожного поля необхідно встановити відповідний тип даних. Для ключа - встановити атрибут auto_increment. Результат показаний на малюнкy 10.3.

Малюнок 10.3 - Вікно для настроювання полів таблиці
3 За допомогою РНР заповніть створену таблицю і відобразіть її у браузері. Для виконання цього завдання необхідно виконати декілька кроків.
4 По-перше, необхідно зв'язати php-код зі створеною БД. Наступний крок - передати із потрібної таблиці дані в php і вивести їх на екран.
<html> <head> <title>данные по заказам</title> </head> <?php $db = mysql_connect("localhost","user","1"); $a=mysql_select_db("auto",$db); if ($a) {echo "";} else {echo "error!";} echo "<h3>Информация по всем заказам </h3>"; $ggg="SELECT * FROM avto"; $result = mysql_query ($ggg,$db); if ($result) {echo "";} else {echo "error!";} echo "<table border=2>"; $p=1; while ($myrow = mysql_fetch_array($result,MYSQL_ASSOC)) { if ($p == 1) { echo"<tr>"; foreach ($myrow as $ind => $buf){echo "<td>$ind</td>";} // выводим названия столбцов echo"</tr>"; $p=2; // присваиваем переменной $p двойку, чтоб при следующей итерации цикла while не выводились названия столбцов $ind } echo "<tr>"; foreach ($myrow as $buf) {echo "<td> $buf </td>"; } echo "</tr>"; } echo "</table>"; ?> <body> </body> </html>
Результат виконання представлений на малюнку 10.4.

Малюнок 10.4 – Зовнішній вигляд таблиці бази даних автомобілів
5 Для того, щоб заповнити таблицю, скористайтеся прикладом коду, описаним вище, у якому змініть mysql_query("SELECT * FROM avto", $db); на mysql_query ("INSERT INTO avto (key,marka,year,color,kuzov,cost,dodatok) VALUES ('1','BMW','2007','grey','sedan','30000','electro');",$db);
6 Зробіть вибірку з бази за автомобілями одієї марки.
7 Потім одночасно за двома полями: одного року випусу і одного кольору.
8 Замініть усі типи кузовів на седан.
9 Усім автомобілям 2008 року випуску замініть колір на зелений.
10 Створіть за допомогою HTML форму вводу за даними про автомобілі та зв’яжіть її з базою даних.
Введіть за допомогою цієї форми дані щодо декількох нових моделей автомобілів.
МЕТА – познайомитися з основами роботи із зображеннями в РНР
Порядок виконання завдання:
1 За допомогою функції imageLine побудуйте суцільну пряму лінію

2 За допомогою функції imageArc намалюйте частину еліпса.
int imageArc(int im, int cx, int cy, int w, int h, int s, int e, int color)
Ця функція малює в зображенні im дугу сектора еліпса від кута s до е (кути вказуються у градусах проти годинникової стрілки). Еліпс малюється такого розміру, щоб вписатися у прямокутник (w, h), де w та h задають його ширину та висоту. cx та cy – координати центру еліпса. Сама фігура не замальовується, обводиться лише її контур, для чого використовується color.

3 За допомогою функції imagePolygon намалюйте багатокутник із заданими вершинами.

4 За допомогою функції imageDashedLine намалюйте пунктирну лінію.
5 За допомогою функції imageFilledRectangle намалюйте зафарбований прямокутник.
МЕТА – познайомитися з основами використання регулярних виразів в РНР
Порядок виконання завдання:
1. Для роботи із регулярними виразами в РНР підтримується два стилі синтаксису регулярних виразів POSIХ і Perl. Стиль POSIХ компілюється в РНР за замовчуванням.
2. У РНР співставлення регулярних виразів подібне до роботи функції strstr(). Нижче наведений перелік регулярних виразів у стилі POSIХ.

3 Запишіть та запустіть на виконання приклад коду, що здйснює пошук підрядків у рядку за допомогою регулярних виразів.

3 За допомогою функції пошуку підрядків ereg() в рядку «Жизнь прекрасна и удивительна, однако не так удивительна!» знайдіть підрядок «удивительна» і занесіть знайдене співпадіння у масив. Виведіть на екран рядок та елементи створеного масиву. Збережіть отриманий код.
Прототип функції ereg():
![]()
4 Виконайте попередню вправу за допомогою функції eregi(). Збережіть отриманий сценарій. Порівняйте результати роботи обох функцій, проаналізуйте.
5 За допомогою функції заміни підрядків ereg_replace() в рядку «Жизнь прекрасна и удивительна» знайдіть підрядок «удивительна» і замініть його на «ужасна». Виведіть на екран рядок до і після виконання функції. Збережіть отриманий код.
Прототип функції ereg_replace():
![]()
6 Розділіть рядок «itp.teleswet.net» на три компоненти та виведіть кожний з них в окремому рядку на екран. Збережіть отриманий код.
МЕТА – познайомитися з основами керування сеансами в РНР
Порядок виконання завдання:
1 Напишіть код що виконує обробку трьох сторінок у сеансі. На першій сторінці потрібно запустити сеанс і зареєструвати змінну $sess_var. Код, що дозволяє зробити це, показаний нижче:
<? sessіon_start(); sessіon_regіster("sess_var"); $sess_var = "Hello world!"; echo "The content of \ $sess_var іs $sess_var<br>"; ?> <a href = "page2.php">Next page</a>
Збережіть сценарій у файлі з назвою page1.php.
2 Наступний сценарій починається з виклику sessіon_start(). Збережіть його у файлі page2.php. Код, що дозволяє зробити це наведений далі:
sessіon_start();
echo "The content of \ $sess_var іa $sess_var<br>"
sessіon_unregіster("sess_var");
<a href = "page3.php">Next page</a>
3. Сценарій, що буде завершувати сеанс та знищувати його збережіть у файлі page3.php.
sessіon_start(); echo "The content of \ $sess_var іs $sess_var<br>"; sessіon_destroy() ;
4 Прослідкуйте за станом змінної . $sess_var на всіх етапах. Проаналізуйте результат.
5 У цій вправі потрібно створити лічильник відвідувань сторінки. Для цього застосовується зберігання даних сеансу. Скористайтеся поданим нижче кодом:


Збережіть отриманий сценарій у файлі phpcounter.php. Результат виконання показаний на малюнку 13.1

Малюнок 13.1 – Лічильник відвідувань працює нормально
6 Передайте ідентифікатор сеансу без cookies через приховане поле форми за допомогою наступного коду:


Збережіть отриманий код у файлі phpsessionnocookies.php. Результат виконання представлений на малюнку 13.2

Малюнок 13.2 – Передача ідентифікатора сеансу без cookies
МЕТА – познайомитися з основами забезпечення безпеки web-додатків в РНР
Порядок виконання завдання:
1 Розглянемо безпеку Web-додатків на прикладі аутентифікації користувачів Створіть за допомогою блокнота файл secret.php і в ньому запишіть програмний код, поданий нижче:

2 Якщо файл буде завантажений без параметрів, то буде відображено форму із запрошенням ввести ім’я та пароль користувача (мал.14.1)

Малюнок 14.1 – Запрошення на ввод імені та паролю користувача
3 Якщо введені дані не правильні, має відображатися повідомлення про помилку (див. мал. 14.2)

Малюнок 14.2 – Повідомлення про помилку при неправильних параметрів
4. Якщо введені дані правильні - відображається секретна інформація (мал. 14.3)

Малюнок 14.3 – Відображення секретної інформації
5 До файлу із попередньої вправи застосуйте шифрування паролю користувача за допомогою функції crypt(). Для цього замість умови:
if($name= =”user” && $password = = “pass”)
треба описати умову:
if($name = ‘user’ && crypt ($password, ‘xx’) == ‘xxkTimYjlikoII’)
6 Збережіть виконані зміни в іншому файлі. Проаналізуйте результат виконання умови в обох випадках.
7 Більшість серверів (наприклад Apache) дозволяють обмежувати доступ до певних розділів веб-сайту. Шляхом налаштовування доступ отримають лише користувачі, які перераховані в конфігураційному файлі серверу. При спробі доступа до захищеної частини сервера буде відображено діалогове вікно, в якому слід увести ім’я користувача та його пароль, як показано на малюнку 14.4.

Малюнок 14.4 – Діалогове вікно авторизації користувача
8 Створіть сценарій у якому використовується авторизація. Якщо користувач введе ім’я та пароль, його ім’я буде відображено. Якщо ж регістраційне ім’я не буде задано, доступ буде заборонений. Збережіть отриманий код.

орієнтація сторінки – книжкова;
поля в документі: ліве – 25мм., праве – 10 мм., верхнє і нижнє 15 мм;
для основного тексту використати шрифт Times New Roman, розміром 14 пт, вирівнювання по ширині, інтервал між рядками – одинарний, відступ першої строки 1,5 см;
Звіт повинен мати титульний аркуш оформлений згідно до взірця (див. додаток А), а також виконані завдання. В кожному завданні повинні бути тема та мета завдання, а також програмні коди розроблюваних сценаріїв та результати їх виконання.
УМОВИ ЗАХИСТУ
При захисті роботи необхідно мати:
роздрукований звіт, оформлений в Word,
звіт в електронному вигляді (на електронному носії);
розроблені Web-додатки в електронному вигляді (на електронному носії).