
МЕТА – познайомитися із засобами роботи з масивами
Порядок виконання завдання:
1 Розглянемо створення у РНР масивів методом присвоєння значення для кожного елемента масиву на прикладі. В масиві $fruits повинні знаходитися наступні елементи: яблуко, груша, абрикос, персик, манго. Індексація членів масиву повинна задаватися автоматично. Код прикладу поданий нижче:
<html> <head> <title>Использование массивов</title> </head> <body> <h1>Использование массивов</h1> <?php $fruits[]="яблоко"; $fruits[]="груша"; $fruits[]="абрикос"; $fruits[]="персик"; $fruits[]="манго"; for($i=0;$i<count($fruits);$i++) echo $fruits[$i], "<br>"; ?> </body> </html>
Результат виконання прикладу показаний на малюнку (мал. 6.1).

Малюнок 6.1 - Приклад створення масиву
Збережіть отриманий код під назвою mas_fruits.
2 За допомогою циклу for організуйте перебір елементів масиву, замініть елемент масиву абрикос на слива та виведіть елементи масиву на екран. Для цього скористайтеся прикладом:
<html> <head> <title>Использование массивов</title> </head> <body> <h1>Использование массивов</h1> <?php $fruits[]="яблоко"; $fruits[]="груша"; $fruits[]="абрикос"; $fruits[]="персик"; $fruits[]="манго"; for($i=0;$i<count($fruits);$i++) if($fruits[$i]=="абрикос") { $fruits[$i]="слива"; echo $fruits[$i], "<br>"; } else echo $fruits[$i], "<br>"; ?> </body> </html>
Результат виконання прикладу показаний на малюнку (мал. 6.2).

Малюнок 6.2 - Приклад заміни елементів масиву
3 За допомогою функції unset (елемент масиву, який видаляється) видаліть елемент манго та за допомогою циклу for організуйте перебір та виводу елементів.
Для виконання прикладу скористайтеся поданим нижче кодом:
<html> <head> <title>Использование массивов, удаление элемента</title> </head> <body> <h1>Использование массивов, удаление элемента "манго"</h1> <?php $fruits[]="яблоко"; $fruits[]="груша"; $fruits[]="абрикос"; $fruits[]="персик"; $fruits[]="манго"; for($i=0;$i<count($fruits);$i++) if($fruits[$i]=="манго") { unset($fruits[$i]); } else echo $fruits[$i], "<br>"; ?> </body> </html>
Збережіть результат.
4 В окремому файлі напишіть код створення масиву $vegitable використовуючи конструкцію $ім’я_масиву = array (індекс1 => значення1, індекс2 => значення2,...). Індексація елементів масиву повинна починатися з цифри 2. В масиві повинні знаходитися наступні елементи: картопля, морква, буряк, капуста. Збережіть отриманий код під назвою mas_ vegitable.
5 Поміняйте місцями індекси елементів масиву та їх значення. Організуйте вивід даних таким чином, щоб спочатку виводило індекс масиву, а потім член масиву. Збережіть отриманий результат.
6 В окремому файлі напишіть код створення масиву $ages індексами якого будуть імена Іван, Марія, Олексій, Олександр. В масиві повинні знаходитися наступні елементи, які відображають вік вказаних осіб: 24, 17, 45, 32. Збережіть отриманий код під назвою mas _ages.
7 Знайдіть та виведіть індекс та елементи масиві з найбільшим та найменшим значенням.
8 Обчисліть та виведіть середній вік осіб, вік яких зберігається в масиві $ages.
9 В окремому файлі напишіть код створення двовимірного масиву $firm, в якому буде знаходитися інформація про співробітників фірми. Індексами масиву будуть імена та прізвища співробітників, елементами сума заробітної платні, яку співробітники отримують в фірмі. Самостійно заповніть масив, занесіть в масив три елемента. Збережіть отриманий код під назвою mas_firm.
10 Напишіть серверний сценарій, який виводить елементи масиву у вигляді таблиці, таким чином щоб ім’я, прізвище та сума заробітної платні виводились в окремих комірках таблиці. Збережіть отриманий результат.
МЕТА – познайомитися з засобами створення та використання функцій
Порядок виконання завдання:
1 Створіть функцію nav_bar, яка буде створювати панель навігації для декількох web-сторінок і містити в собі гіперпосилання для переходу на наступні сторінки.
Для створення панелі навігації використайте стандартну функцію echo, яка буде формувати необхідні теги HTML та необхідний текст.
2 Також використайте теги переходу гіперпосилань та позначення   для створення неподільних пробілів, які не розриваються при вирівнюванні рядків.
3 За допомогою HTML напишіть код web-сторінки з включеним до нього кодом мовою РНР, який буде викликати створену вами функцію nav_bar. Для виконання завдання скористайтеся прикладом коду, поданим нижче. На малюнку 7.1 зображений результат виконання завдання.



Малюнок 7.1 – Панель навігації створена за допомогою функції nav_bar
4 Для ознайомлення з роботою із вкладеними функціями запишіть у блокноті даний приклад коду. На малюнку 7.2 зображений результат виконання завдання. Проаналізуйте отриманий результат.


Малюнок 7.2 – Виклик вкладеної функції
4 В окремому файлі напишіть мовою РНР код створення масиву індексами якого будуть прізвища студентів групи, а елементами їх середній бал.
5 В цьому файлі створіть функцію, яка буде виводити елементи масиву у вигляді таблиці, таким чином щоб прізвища та середній бал виводились в окремих комірках таблиці.
6 Створіть ще одну функцію, яка буде обчислювати середній бал групи. Збережіть отриманий результат.
7 За допомогою HTML створіть форму для вводу данних як зображено на малюнку 7.2.

Малюнок 7.2 – Форма вводу даних у заказ.
Створіть масив, в елементами якого є тип каюти. Список для вибору типу каюти створіть за допомогою тегів:
<select name="nomer">
<option> елемент масиву</option>
<option> елемент масиву</option>
</select>
8 Створіть функцію яка буде обробляти данні введені з форми та виводити повідомлення зображене на малюнку 7.3. Збережіть отриманий результат.

Малюнок 7.3 – Результат обробки замовлення
9 За допомогою HTML створіть форму для вводу даних, в якій будуть дві комірки для введення діапазону температур. Напишіть сценарій, який буде обробляти данні введені з форми за допомогою функції. Функція повинна містити оператор if-else та виводити повідомлення “Температура комфортная” якщо введені числові данні знаходяться в інтервалі від 25 до 30 та “Температура не комфортная” у протилежному випадку. Збережіть отримані файли.
МЕТА – познайомитися з засобами взаємодії РНР з файловою системою.
Порядок виконання завдання:
1 Підтримка завантаження файлів на сервер по протоколу HTTP - одна з найважливіших функціональних можливостей РНР. У цьому процесі пересилання файлів відбувається не у звичайному для HTTP-протоколу напрямку - із сервера на браузер, а в протилежному - із браузера на сервер.
За допомогою блокноту створіть html-форму, та запишіть наступний програмний код для завантаження файлу на сервер.
<html> <head> <title> Адміністрація – завантаження нових файлів </title> </head> <body> <hl>Завантаження нових файлів новин</hl> <form enctype="multipart/form-data" action="upload.php" method=post> cinput type="hidden" name="MAX_FILE_SIZE" value="1000"> Upload this file: <input name="userfile" type="file"> <input type="submit" value="Send File"> </form> </body> </html>
Збережіть отриманий код у файлі під назвою upload.html.
2 У файлі upload.php створіть PHP-сценарій прийому файлу, що пересилається за допомогою HTML-форми, використовуючи нижчеподаний програмний код:
<head> <title>Uploading... </head> <body> <hl>Uploading if ($userfile=="none") { echo "Problem: no file uploaded"; exit; } if ($userfile_size==0) { echo "Problem: uploaded file is zero length"; exit; } if ($userfile_type != "text/plain") { echo "Problem: file is not plain text" ; exit; } if ( ! is_uploaded_f ile ($userf ile) ) { echo "Problem: possible file upload attack"; exit; } $upfile = " /home /book/uploads/ " . $userf ile_name ; if ( ! copy ($userf ile, $upfile) ) < echo "Problem: Could not move file into directory"; exit ; echo "File uploaded successfully<brxbr>" ; $fp = f open ($upf ile, "r") ; $contents = fread ($fp, filesize ($upfile) ) ; f close ($fp) ; $contents = strip_tags ($contents) ; $fp = f open ($upf ile, "w") ; fwrite($fp, $contents) ; f close ($fp) ; echo "Preview of uploaded file contents : <brxhr>" ; echo $contents; echo "<brxhr>" ; ?> </body> </html>
Зверніть увагу, що основну частину обсягу цього сценарію становлять оператори перевірки помилок. Завантаження файлів на сервер може відбуватися із порушеннями безпеки, яким треба, за можливістю, запобігати. Важливо також ретельно перевіряти завантажений файл на предмет допустимості відкритої публікації інформації, що міститься в ньому.
3 Після завантаження декількох файлів користувачам може знадобитися переглянути їх і виконати деякі маніпуляції із змістом. Для цієї мети в РНР передбачений набір функцій для роботи з файлами й каталогами. Запишіть у файл browsedіr.php - сценарій, що виконує перегляд каталогів для перевірки результатів завантаження файлів за нижченаведеним прикладом
<html> <head> <tіtle>Browse Dіrectorіes</tіtle> </head> <body> <hl>Browsіng</hl> $current_dіr = "/home/book/uploads/"; $dіr = opendіr($current_dіr); echo "Upload dіrectory іs $current_dіr<br>" echo "Dіrectory Lіstіng: <brXhrXbr>"; whіle ($fіle = readdіr($dіr)) { echo "$fіle<br>" echo "<hrXbr>" closedіr($dіr); ?> </body> </html>
4 Самостійно завантажте на сервер у декілька каталогів кілька файлів. Розглянемо кілька функцій для роботи з файлами. Функція basename повертає ім'я файлу без вказівки каталогу, у якому він розташований. Функції fіleatіme() і fіlemtіme() повертають мітки часу, відповідно, останнього обігу й останньої модифікації файлу. Функції fіleowner() і fіlegroup() повертають ідентифікатори, відповідно, користувача (uіd) і групи (gіd), яким наданий доступ до файлу. Функція fіleperms() повертає дозволи доступу до файлу. Функція fіletype() повертає деякі відомості про тип файлу. Значення, що повертаються, виглядають так: fіfo, char, dіr, block, lіnk, fіle і unknown. Функція fіlesіze повертає розмір файлу в байтах. Наступний набір функцій іs_dіr(), іs_executable(), іs_fіle(), іs_lіnk(), іs_readable() і іs_wrіtable(). Кожна з них перевіряє певний атрибут файлу, повертаючи в результаті true або false. Замість великої кількості перерахованих функцій можна використовувати єдину stat(), що повертає масив інформації, що містить значення, що повертаються окремими функціями. Аналогічна їй функція lstat() застосовується для символічних посилань. Застосуйте до ваших завантажених файлів будь-які три з перерахованих функцій.
5 Файлова система містить також функції створення, переміщення й видалення файлів. Перша й найпростіша функція - touch(). З її допомогою можна створити файл і поміняти його ім'я або час останньої модифікації. Прототип функції такий: іnt touch (strіng fіle, [іnt tіme]) Якщо файл із зазначеним ім'ям уже існує, час його модифікації буде змінено на поточний час або на час, зазначений у другому аргументі (якщо він не опущений). В Wіndows для видалення файлів варто застосовувати функцію system("del fіlename.ext") ; Копіювання й переміщення файлів виконується функціями сору() і rename(): copy($source_path, $destіnatіon_path); rename($oldfіle, $newfіle); Функція rename має подвійне призначення - крім перейменування файлів, вона також виконує їхнє переміщення. Потренуйтеся копіювати, переміщувати та видаляти файли із завантажених вами каталогів. Збережіть отримані результати.
МЕТА – познайомитися з основами об’єктно-орієнтованого програмування на РНР
Порядок виконання завдання:
1 Створити у файлі class.php за допомогою стандартних засобів Microsoft Windows користувальницький клас Coor із полем даних $name та методами Setname та Getname. Створити об’єкт цього класу, надати йому значення «Nick» та вивести це значення на екран.
Для виконання завдання скористайтеся скриптом:
<?php class Coor{ var $name; function Getname() {echo $this->name; } function Setname($text) { $this->name=$text; } } $object = new Coor; $object->Setname("Nick"); echo "Нoвый обьект класса "; $object->Getname(); ?>
Результат виконання представлений на малюнку 9.1.

Малюнок 9.1 Створення об’єкту класу
2 Створити клас Webpage і в ньому створити конструктор. Записати скрипт у файл з розширенням .php. Скористайтеся наступним фрагментом коду:
<? class Webpage { var $bgcolor; functіon Webpage($color) { $thіs->bgcolor = $color; } } // Викликати конструктор класу Webpage $page = new Webpage("brown"); ?>
3 Внесіть зміни до попереднього файлу, застосувавши функцію unset для знищення об’єкту класу. У разі успішного знищення виведіть на екран напис: «Объект удален успешно!». Змінений файл збережіть.
Результат виконання представлений на малюнку 9.2.

Малюнок 9.2 – Знищення об’єктів класу
4 Створіть у файлі zvernennya.php два класи базовий А та дочірній В. Запишіть у кожному з цих класів метод example. Створіть об’єкт класу В. Викличте метод eхample класу В.