- •1. Основні технології розробки web-додатків
- •1.1 Протокол http
- •Основні технології розробки web-додатків
- •1.3 Короткі підсумки
- •2 Структура html-документа
- •2.1. Елементи мови html
- •2.2 Структура html-документа
- •2.2.1.Початок
- •Заголовки
- •Нижче на малюнку показаний результат використання наступних заголовків:
- •Списки в html
- •2.2.2 Тіло документа
- •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 Видалення користувача
11.1.4 Побудова бібліотек функцій.
Бібліотеки функцій – ефективний засіб економії часу при побудові додатків. Припустимо, ви написали серію функцій для сортування масиву. Ймовірно, ці функції будуть неодноразово використовуватися в різних додатках. Замість того щоб постійно переписувати ці функції в новий сценарій або копіювати їх через текстовий буфер, набагато зручніше розмістити всі функції сортування в окремому файлі і привласнити йому легко впізнавальне ім'я (наприклад, array_sorting.inc).
Приклад. Бібліотеки функцій (array_sorting.inc)
<?// Файл: array_sorting.inc
// Призначення: бібліотека функцій для сортування масивів.
// Дата: 17 июля 2000 р
function merge_sort ($ array. $ tmparray, $ right, $ left) {
... } function bubble_sort ($ array. $ n) {
...
} function quicksort ($ array. $ right. $ left) {
... } ?>
Бібліотека array_sorting.inc служить накопичувачем для всіх функцій сортування. Це зручно, оскільки функції фактично групуються за своїм призначенням та при необхідності можна легко знайти потрібну функцію. Як видно в приведеному вище прикладі, в початок бібліотеки зазвичай включається заголовок з декількох рядків коментарю, щоб при відкритті файлу бібліотеки можна було відразу отримати коротке зведення його вмісту. Після власної бібліотеки функцій можна включити її в сценарій за допомогою команд PHP include( ) і require( ), в результаті чого всі функції бібліотеки стають доступними.
У загальному вигляді синтаксис цих команд виглядає так:
include(шлях/ім'я_файлу);
require(шлях/ім'я_файлу);
Також існує альтернативний варіант:
include " шлях/ім'я_файлу ";
require " шлях/ім'я_файлу ";
?>
Масиви
В одній з перших лекцій ми розповідали про те, як можна створити масив даних. Нагадаємо, що масив можна створити двома способами:
1. За допомогою конструкції array:
$ Array_name = array ("key1" => "value1", "key2" => "value2");
2. Безпосередньо задаючи значення елементів масиву:
$ Array_name ["key1"] = value1;
Наприклад, нам потрібно зберігати список документів, які будуть видалені з бази даних. Природно зберігати його у вигляді масиву, ключем в якому буде ідентифікатор документа (його унікальний номер), а значенням - назва документа. Цей масив можна створити таким чином:
<? Рhp
$ Del_items = array ("10" => "Наука і життя", "12" => "Інформатика");
// Додаємо елемент в масив
$ Del_items ["13"] = "Програмування на Php";
?>
11.2.1 Операції з масивами.
Масив – це тип даних, з даними цього типу повинні бути визначені операції. Які ж операції можна проводити з масивами? Масиви можна складати і порівнювати.
Складають масиви за допомогою стандартного оператора «+». Взагалі кажучи, цю операцію по відношенню до масивів точніше назвати об'єднанням. Якщо у нас є два масиви, $ a і $ b, то результатом їх складання (об'єднання) буде масив $ c, що складається з елементів $ a, до яких справа дописані елементи масиву $ b. Причому, якщо зустрічаються збігаючи ключі, то в результуючий масив включається елемент з першого масиву, тобто з $ a. Таким чином, якщо складаються масиви в мові PHP, від зміни місць доданків сума змінюється: <? Рhp
$ a = array ( "і" => "Інформатика", "м" => "Математика");
$ b = array ( "і" => "Історія", "м" => "Біологія", "ф" => "Фізика");
$ c = $ a + $ b;
$ d = $ b + $ a;
print_r ($ c);
// Отримаємо: Array ([і] => Інформатика [м] => Математика [ф] => Фізика)
print_r ($ d);
// Отримаємо: Array ([і] => Історія [м] => Біологія [ф] => Фізика)
?>
Звідси порівнювати масиви можна, перевіряючи їх рівність чи нерівність або еквівалентність або нееквівалентність. Рівність масивів – це коли збігаються всі пари ключ / значення елементів масивів. Еквівалентність – коли крім рівності значень і ключів елементів потрібно ще, щоб елементи в обох масивах були записані в одному і тому ж порядку. Рівність значень в PHP позначається символом «==», а еквівалентність – символом «===».
<?php
$a = array("і"=>"Інформатика", "м"=>"Математика");
$b = array("м"=>"Математика", "і"=>" Інформатика ");
if ($a == $b) echo " Масиви рівні і ";
else echo " Масиви НЕ рівні і ";
if ($a === $b) echo " еквівалентні ";
else echo " НЕ еквівалентні ";
// Отримаємо echo "Масиви рівні і НЕ еквівалентні"
?>
Далі розглянемо ще одну важливу операцію з масивом - підрахунок кількості йогоелементів. Для її реалізації в PHP є спеціальна функція.
Функція count. Не раз уже ми використовували функцію count (), щоб обчислити кількість елементів масиву. Насправді ця функція обчислює число елементів в змінній взагалі. Якщо застосувати її до будь-якої іншої змінної, вона поверне 1. Виняток становить змінна типу NULL – count (NULL) є 0.
Крім того, застосовуючи цю функцію до багатовимірного масиву, щоб отримати число його елементів, потрібно використовувати додатковий параметр:
COUNT_RECURSIVE.
<?php
$del_items = array("langs" => array("10"=>"Python", "12"=>"Lisp"),
"other"=>"Інформатика");
echo count($del_items)."<br>";
// виведе 2
echo count($del_items, COUNT_RECURSIVE);
// виведе 4
?>
Ми не будемо повторювати все, що було сказано про масиви в попередніх лекціях. У цій лекції ми розглянемо деякі вбудовані функції для роботи з масивами. І почнемо ми з функцій для пошуку значень в масиві.
Деякі вбудовані функції для роботи з масивами:
Функція in_array:
in_array ("шукане значення", "масив", ["обмеження на тип"]);
Дозволяє встановити, чи розміщати в заданому масиві шукане значення. Якщо третій аргумент заданий як true, то в масиві потрібно знайти елемент, що співпадає з шуканим не тільки за значенням, але і по типу.
Якщо шукане значення – рядок, то порівняння чутливе до регістру. Наприклад, є масив не вивчених нами мов програмування. Ми хочемо дізнатися, чи міститься в цьому масиві мова PHP. Напишемо наступну програму: <? Php
$ langs = array ("Lisp", "Python", "Java", "PHP", "Perl");
if (in_array ("PHP", $ langs)) echo "Треба б вивчити PHP <br>";
// Виведе повідомлення "Треба б вивчити PHP"
if (in_array ("php", $ langs)) echo "Треба б вивчити php <br>";
// Нічого не виведе, оскільки в масиві є рядок "PHP", а не "php"
?>
Завданням пошуку значення цієї функції може виступати і масив. Правда, це властивість було додано тільки починаючи з PHP 4.2.0. Наприклад:
<?php
$langs = array("Lisp", "Python", array("PHP", "Java"), "Perl");
if (in_array(array("PHP", "Java"), $langs)) echo " Треба б вивчити PHP і Java <br>"; // Виведе повідомлення "Треба б вивчити PHP і Java"
?>
- Функція array_search. Це ще одна функція для пошуку значення в масиві. На відміну від in_array в результаті роботи array_search повертає значення ключа, якщо елемент знайдений, і брехня - в іншому випадку. А ось синтаксис у цих функцій однаковий:
array_search ("шукане значення", "масив", ["обмеження на тип"]);
Порівняння рядків чутливе до регістру, а якщо вказаний опціональний аргумент, то порівнюються ще й типи значень. До PHP 4.2.0, якщо шукане значення не було знайдено, ця функція повертала помилку або пусте значення NULL.
Тепер, навпаки, нехай у нас є масив мов програмування, які ми знаємо. Причому ключем кожного елемента є номер, який вказує, якою за рахунком буде вивчена ця мова.
<?php
$langs = array("Lisp", "Python", "Java", "PHP", "Perl");
if (!array_search("PHP", $langs)) echo " Треба б вивчити PHP <br> ";
else
{
$k = array_search("PHP", $langs);
echo "PHP вивчений $k – м";
}
?>
В результаті ми отримаємо рядок:
PHP вивчений 3 – м
Очевидно, що ця функція більш функціональна, ніж in_array, оскільки ми не тільки отримуємо інформацію про те, що шуканий елемент в масиві є, але і дізнаємося, де саме в масиві він знаходиться. А що буде, якщо шуканих елементів в масиві кілька? У такому випадку функція array_search () поверне ключ першого зі знайдених елементів. Щоб отримати ключі всіх елементів, потрібно скористатися функцією array_keys ().
- Функція array_keys – вибирає всі ключі масиву. Але у неї є додатковий аргумент, за допомогою якого можна отримати список ключів елементів з конкретним значенням. Синтаксис цієї функції такий:
array_keys ( "масив", [ "значення для пошуку"]);
- Функція array_keys () повертає як рядкові, так і числові ключі масиву, організовуючи всі значення у вигляді нового масиву з числовими індексами.
Ми записали масив мов, які вивчили. Список був довгим, і деякі мови були записані кілька разів. У нас виникла підозра, що один з таких мов - Lisp. Давайте це перевіримо:
<?php
$langs = array("Lisp", "Python", "Java", "PHP", "Perl", "Lisp");
$lisp_keys = array_keys($langs, "Lisp");
echo "Lisp входить в масив".count($lisp_keys)." рази:<br>";
foreach ($lisp_keys as $val) echo "- під номером $val<br>";
?>
В результаті отримаємо:
Lisp входить в масив 2 рази:
під номером 0
під номером 5
- Функція array_keys (), як і дві попередні, залежить від регістру, тобто елементів LISP в масиві вона не виявить. array_keys () з'явилася лише в PHP4. У PHP3 для реалізації її функціональності потрібно придумувати свою функцію.
Якщо є функція для отримання всіх ключів масиву, то можна припустити, що існує і функція для отримання всіх значень масиву. Дійсно, вона існує. Це функція array_values (масив). Всі значення переданого їй масиву записуються в новий масив, проіндексований цілими числами, тобто всі ключі масиву губляться, залишаються тільки значення. Але повернемося до нашого прикладу.
Отже, ми з'ясували, що мова Lisp випадково згадана в нашому масиві двічі. Оскільки вивчити одну мову двічі не можна ( «вчив, але забув» не рахується), то потрібно якось позбутися від повторюваних мов. Зробити це досить просто за допомогою функції array_unique ().
- Функція array_unique (масив) – повертає новий масив, в якому елементи, які повторюються фігурують в одному екземплярі. Таким чином, замість кількох однакових значень і їх ключів ми маємо одне значення. Який у нього буде ключ? Як з декількох ключів однакових елементів вибирається той, який буде збережений в новому масиві? Відбувається наступне. Всі елементи масиву перетворюються в рядки і упорядковано. Потім обробник запам'ятовує перший ключ для кожного значення, а інші ключі ігнорує. Спробуємо позбутися від повторюваних мов в списку вивчених.
<?Php $ langs = array ( "Lisp", "Java", "Python", "Java", "PHP", "Perl", "Lisp");
print_r (array_unique ($ langs));
?> Отримаємо наступне:
Array ([0] => Lisp [1] => Java [2] => Python [3] => PHP [4] => Perl)
Далі розглянемо задачу сортування масиву.
