WEB-ПРОГРАМУВАННЯ НА РНР
МЕТОДИЧНІ ВКАЗІВКИ
до лабораторної роботи № 11
з дисципліни “Алгоритмізація та програмування, частина 2”
для студентів спеціальності 122 «Комп’ютерні науки та інформаційні технології»
Затверджено
на засіданні кафедри інформаційних систем та мереж
Протокол №__ від _____.2017 р.
Львів-2017
Web-програмування на РНР: Методичні вказівки до лабораторної роботи № 11 / Укл.: В.А. Висоцька, Л.В. Чирун. – Львів: Видавництво Національного університету ”Львівська політехніка”, 2017. – 91 с.
Укладачі
Висоцька В.А., канд. техн. наук, доц.
Чирун Л.В., канд. техн. наук, доц.
Відповідальний за випуск Литвин В.В., доктор техн. наук., проф.
Рецензенти Верес О.М., канд. техн. наук, доц.
Берко А.Ю., доктор техн. наук., проф.
Мета роботи: ознайомитись з мовою програмування РНР. Настройка сервера Apache, основи мови РНР, асоціативні масиви.
1. Теоретичні відомості
РНР - це мова програмування, код якої вбудовується безпосередньо в HTML-сторінку. Програму, написану на РНР, називають РНР-скриптом. При запиті користувача web-cepBep переглядає документ, виконує знайдені в ньому РНР-інструкції (оператори мови РНР), а результат їхнього виконання повертає користувачеві. При цьому статична частина документа, написана мовою HTML, фактично є шаблоном, а змінювана частина формується нри виконанні РНР-інструкцій. Для віддаленого користувача подібні документи нічим не відрізняються від звичаіїних статичних HTML-докумеитів, за винятком того, що в розширенні імені фаіїлу для таких документів може стояти не htm або html, а php (а в старих версіях phtml або php3). РНР - це система розробки скриптів, що включає в себе CGI - інтерфейс, інтерпретатор мови та набір функцій для доступу до баз даних і різних об'єктів WWW (функції для роботи з електронною поштою, FTP, http, тощо). На сьогодні, РНР є одним із найбільш зручних і водночас достатньо потужним засобом розробки додатків WWW і інтерфейсів до баз даних в мережі Інтернет. РНР-скрипти знаходяться на сервері і їхній вміст відвідувачеві сайту переглянути неможливо. Файли скриптів мають розширення *.php. При активації скринту (заниті користувача) серверна програма виконує всі команди php цього скринту, не торкаючись статичної частини документа (HTML-код) і результат повертається програмі-браузеру. Після виконання РНР-скринта користувач бачить звичайну веб-сторінку, яка відрізняється від інших тільки розширенням.
1.1. Установка РНР для роботи із сервером Apache
Можлива установка РНР як модуля Apache і як окремого CGI-модуля.
Для установки необхідно:
- зупинити сервер Apache;
- розпакувати файли РНР у який-небудь каталог (наприклад, c:\php\);
- скопіювати файл php4ts.dll у windows\system(32)\;
- змінити настроювання Apache у файлі apache\conf\httpd.conf:
а) при установці як модуля:
LoadModulephp4_module c:/php/sapi/php4apache.dll
AddType application/x-httpd-php .php4
AddType application/x-httpd-php .phtml
AddType application/x-httpd-php .php3
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
# Додаємо PHP - розширення в рядок
Directorylndex index.html index.phtml index.phpS default.php default.phpS default.phtml
б) при установці як CGI - додатка:
ScriptAlias /php/ "C.Vphp/"
<Directory "C:/php">
AllowOverride None
Options None
</Directory>
Action application/x-httpd-php "/php/php.exe"
AddType application/x-httpd-php .phtml
AddType application/x-httpd-php .php3
AddType application/x-httpd-php .php
Action application/x-httpd-php-source "/php/php.exe"
AddType application/x-httpd-php-source .phps
# Додаємо PHP - розширення в рядок:
Directorylndex index.html index.phtml index.phpS default.php default.php3 default.phtml
- · скопіювати файл php3-dist.ini у каталог \*windows*\, перейменуйте його в php.ini
- · роз коментувати у файлі php.ini рядок: ;extention=iм'я_мoдyля.dll для тих модулів, що планується використовувати (для роботи з MySQL завантаження модулів не потрібно - її підтримка убудована в РНР4).
1.2. Скрипт-мова PHP
1.2.1. Вступ у PHP
PHP - це скрипт-мова (scripting language), що вбудовується в HTML, що інтерпретується й виконується на сервері. Простіше всього це показати на прикладі.
Створіть у каталозі сервера файл ex01.php, що містить наступний текст.
<html>
<head>
<title>Example</title>
</head>
<body>
<? echo "Hi, I'm a PHP script!"; ?>
</body>
</html>
Потім запустивши браузер, наберіть у рядку URL: http://server_url/labal/ex01.php, де server_url - адреса вашого web-cepвepa. Після виконання цього скрипту ми одержимо сторінку, у якій буде написане, як на малюнку 11.1.
Рис. 11.1
Розглянемо даний приклад докладніше: усі рядки приклада крім однієї – це звичайний статичний набір тегів HTML. Найбільший інтерес представляє рядок, укладений у тег <? ?>. Це і є РНР-скрипт. У даному випадку - це єдина команда РНР - echo, що здійснює вивід у потік стандартного висновку фрази 'Ні, I’m а РНР script!'. Таким чином, після обробки сторінки на сервері браузерові клієнта передається наступний HTML-код:
<html>
<head>
<title>Example</title>
</head>
<body>
Hi, I'm a PHP script!"
</body>
</html>
фактично, після обробки сервером, замість блоків коду РНР підставляються результати їхнього виконання, тобто те, що дана ділянка коду вивела в стандартний потік виводу (наприклад, функцією echo).
Основна відмінність РНР від CGI-скриптів, написаних на інших мовах, типу Perl чи С - це те, що в CGI-програмах ви самі пишете виведений HTML-код, а, використовуючи РНР - ви вбудовуєте свою програму в готову HTML-сторінку, використовуючи відкриваючий і закриваючий теги <? і ?>.
Відмінність РНР від JavaScript, полягає в тому, що РНР-скрипт виконується на сервері, а клієнту передається результат роботи, тоді як у JavaScript-код цілком передається на клієнтську машину, і тільки там виконується.
РНР дуже схожий на Active Server Pages (ASP) і Java Server Pages (JSP). Усі три мови дозволяють розміщати код, який виконується на Web-cepвepi, всередині HTML сторінок.
1.2.2. Можливості РНР
У декількох словах: на РНР можна зробити все, що можна зробити за допомогою CGI-програм. Наприклад: обробляти дані з форм, генерувати динамічні сторінки, одержувати й посилати куки (cookies).
Крім цього в РНР включена підтримка багатьох баз даних (databases), що робить написання Web-програм із використанням БД дуже простим.
От неповний перелік підтримуваних БД:
Dabase, InterBase, Solid;
dBase, MSQL, Sybase;
Empress, MySQL, Velocis;
FilePro, Oracle, Unix rdbm;
Informix, PostgreSQL.
В добавок до всього РНР розуміє протоколи ІМАР, SNMP, NNTP, РОРЗ і навіть HTTP, а також має можливість працювати із сокетами (sockets) TCP/IP і спілкуватися на інших протоколах. Синтаксис РНР дуже схожий на синтаксис С чи Perl. Люди, знайомі з програмуванням, дуже швидко зможуть почати писати програми на РНР. У цій мові немає строгої типізації даних і немає необхідності в діях по виділенню/звільненню пам'яті.
Програми, написані на РНР, досить легкочитаємі. Написаний РНР – код легко прочитати й зрозуміти, на відміну від Perl-програм.
1.2.3. Синтаксис РНР
Скрипт мова РНР подібна по синтаксисі мові С за багатьма показниками. Вона підтримує змінні, масиви, звертання до функцій, різні типи змінних і безліч інших речей, що вам можуть знадобитися для написання складних програм. Кожна команда РНР починається з тега <?, і закінчується ?>. Команди можуть бути згруповані усередині однієї пари <? ?> і відокремлюватися друг від друга символом ; . Підтримуються змінні, імена змінних починаються із символу $. Так, наприклад, щоб привласнити значення 5 змінної а, потім відобразити її, можна написати наступний фрагмент:
<?$а = 5.?>
<?echo $а?>
це можна записати також у виді:
<?; $а = 5; echo $а ?>
чи навіть:
<?$а = 5;
echo $а;?>
це можна побачити у прикладі ex02.php.
Приклад ex02.php
Перший тип об'яви: <br>
<?$а = 5?>
<?echo $а?> <br>
Другий тип об'яви: <br>
<?; $а = 5; echo $а ?> <br>
Третій тип об'яви: <br>
<? $а= 5;
echo $а; ?>
запустивши сторінку на сервері, ми отримаємо результат, який показано на малюнку 11.2.
Рис. 11.2
Зайві символи пробілу, табуляції і нового рядка ігноруються. Це потрібно для того, щоб формувати блоки програми РНР, для більшої зручності читання. Регістр написання має значення для імен змінних, але не для імен функцій. Пізніше в цій документації, при огляді функцій, регістр використовується тільки для того, щоб зробити імена функцій більш читабельними. У фактичній програмі Ви можете використовувати будь-який регістр, що побажаєте. Коментарі підтримуються. Коментарі записуються точно так само як коментарі в Мові С. /* починає коментар, */ закінчує коментар. Коментарі можуть бути поміщені в будь-якім місці усередині блоку <? ... ?>.
1.2.4. Короткий довідник найбільш уживаних тегів html-розмітки
Тег |
Опис тегу |
Параметр |
Призначення параметра |
<body> </body> |
Обрамляє весь вміст документа |
text |
задає колір тексту всього документа (по замовчуванню) колір задається в форматі #RRGGBB де RR-червона складова кольору виражена двоцифровим шістнадцятковим числом GG - зелена, ВВ — синя |
bgcolor |
задає колір тла документа |
||
background |
задає фонову картинку |
||
<font> </font>
|
Задає шрифт тексту |
color |
колір |
size |
розмір, можна задати або фіксований розмір або наскільки збільшити(зменшити) розмір відносно розміру шрифта по замовчуванню |
||
face |
тип шрифта (Агіаl, Courier і т.п.) |
||
<i> </i> |
Виділяє текст курсивом |
||
<b> </b> |
Жирний шрифт |
||
<u> </u> |
Підкреслений текст |
||
<a> </a> |
Гіперпосилання |
href |
Задає шлях документу, який відкриється коли користувач натисне на дане гіперпосилання |
<a> </a> |
Гіперпосилання |
target |
Задає вікно в якому відкриється документ Може приймати значення _self _parent _top blank |
<img> |
Вставляє малюнок |
src |
Шлях до файлу з малюнком |
<table> </table> |
Таблиця |
height |
Задає висоту таблиці в пік селях або в процентах відносно вікна документа |
width |
Ширина таблиці |
||
border |
Товщина рамки таблиці |
||
<tr> </tr> |
Задає рядок таблиці |
||
<td> </td> |
Задає клітинку таблиці |
||
<form> </form> |
Форма |
action |
Шлях до сторінки з скриптом, який виконуватиме обробку переданих даних. |
enctype |
Формат даних, що передаються. За замовчуванням параметр набуває значення application/x-www-formurlencoded, що відповідає передачі даних у текстовому форматі. У випадку завантаження файлів на сервер enctype повинен бути вказаний як multipart/form-data. |
||
method |
Метод, що використовується для запиту даних. Може приймати значення Get чи Post |
||
<input |
Текстове |
name |
ім'я змінної |
type="text"> |
поле |
size |
розмір (в символах) |
Maxlength |
максимальна кількість символів що можна ввести |
||
value |
текст за замовчуванням |
||
<input type= "password"> |
Поле введення паролю |
Параметри ті самі що і в текстового поля |
|
<input type= "hidden"> |
Приховане текстове поле |
Параметри ті самі що і в текстового поля |
|
<textarea> </textarea> |
Область тексту |
name |
ім'я змінної |
rows |
Кількість рядків |
||
cols |
Кількість символів в рядку |
||
<input type= "checkbox"> |
Незалежний перемикач |
name |
ім'я змінної |
checked |
Якщо присутній то перемикач увімкнутий по замовчуванню |
||
value |
Значення яке набуде змінна коли перемикач увімкнутий |
||
<input type= "radio"> |
Залежний перемикач |
name |
ім'я змінної |
checked |
Якщо присутній то перемикач увімкнутий по замовчуванню |
||
value |
Значення яке набуде змінна коли перемикач увімкнутий |
||
<select> </select> |
Список вибору. Елементи списку задаються тегом <option> |
name |
ім'я змінної |
size |
кількість видимих рядків (по замовчуванню 1) |
||
multiple |
дозволяє користувачу вибрати одночасно кілька елементів (з допомогою клавіш Ctrl і shift) |
||
<option> </option> |
Елемент списку вибору. Вставляється між тегами <select> і </select> |
value |
значення яке набуде змінна коли даний елемент вибрано |
selected |
задає вибір по замовчуванню |
||
<input type="sub- mit"> |
Кнопка відправки форми |
name |
ім'я змінної |
value |
напис на кнопці |
||
<input type= "reset"> |
Кнопка очищення форми |
name |
ім'я змінної |
value |
напис на кнопці |
1.3. Змінні в РНР
У цій роботі познайомимось з такими об'єктами мови php, як змінні. із змінними ви зустрічались вже в інших мовах програмування (наприклад, у Pascal). У php зміст поняття «змінна» не відрізняється від інших мов програмування. Імена змінних в php починаються з символу $ (наприклад, $і, $I,$count), регістр при найменуванні змінних має важливе значення, тому $і та $І це дві різні змінні. Оператором присвоєння є символ = (аналог := у мовІ Pascal). РНР підтримує наступні типи змінних:
- Ціле число (Integer);
- Подвійної точності із плаваючою комою (Double);
- Стрічка (String);
- Масив (Array);
- Об'єкт (Object);
- Pdfdoc (тільки, якщо допускається підтримка формату PDF);
- Pdfinfo (тільки, якщо допускається підтримка формату PDF);
Опис типу змінної не є обов'язковим і тому програмістом може бути і не визначений. Кожна змінна автоматично перетворюється в кожній з типів й різні функції використовують потрібний тип. проте, існує декілька функцій, для яких важливий тип змінної. Для ініціалізації (визначення) змінної необхідно їй просто присвоїти значення.
<?php
$а = 5; - змушує змінну $а стати змінною типу Integer
$b = 5.0; - змушує змінну $b стати змінною типу Double
$0 = "5"; - змушує змінну $с стати змінною типу String
?>
Зазвичай використовують три типи змінних. Довгі цілі (long int), подвійної точності з плаваючою комою, (double) і символьні рядки (strings). Тип змінних виявляється автоматично. Наприклад:
<?$а = 5?> - змушує $а стати змінної типу INTEGER;
<?$а = 5.0?> - змушує $а стати змінної типу DOUBLE;
<?$а = "5"?> - змушує $а стати змінної типу STRING.
Тип змінної взагалі не дуже важливий. Кожна змінна, незалежно від типу, перетворюється в кожній із трьох типів внутрішньо, і різні функції пробують використовувати правильний тип. Є тільки кілька функцій, для яких важливий тип змінної. Усі три типи змінних можуть також розглядатися як масиви, якщо до їхніх імен додається [значення]. На відміну від С, масиви в РНР фактично являють собою асоціативні масиви, подібні тим, що використовуються в Perl. Наступний запис, вірний:
<? $а[0] = 5;
$а ["hello"] = 6;
echo $a[0];
echo $a["hello"]; ?>
зверніть увагу, що, якщо ім'я змінної використовується, і як масив і як звичайна змінна, то ім'я звичайної змінної є синонімом елементу масиву з індексом «0». Тобто $а = 1, це теж саме, що $а[0] = 1.
РНР також підтримує не-індексовані масиви. Не-індексований масив генерує власний індекс, у міру додавання елементів до нього. Наприклад,:
$а[] = "Hello";
$а[] = "There";
першому елементу, що вставляється в не-індексований масив, завжди привласнюється індекс 0, другий 1 індекс, і m.д. Отже вищезгадані елементи можуть бути роздруковані за допомогою:
echo $а[0];
echo $а[1];.
Ви можете використовувати функцію count(), для того щоб визначити кількість елементів для будь-якого масиву.
Ще одна властивість мови, це те, що тип змінної визначає, які основні операції можуть бути виконані. Наприклад, $а = $b + $с може поводитися подвійно. Якщо $b це число, то числове значення $с додається до $b, і сума зберігається в $а. У цьому випадку тип $с не важливий. Операція керується типом першої змінної. Якщо $b рядок, то значення рядка $с конкатенується з $b, і результуючий рядок міститься в $а. Це також приводить до деяких непорозумінь.
Приклад ex03.php:
<? $а[] = "Hello";
$а[] = "There";
echo $а[0];
echo "<br>";
echo $a[l];
echo "<br> кількість елементів масиву a : ";
echo count($a)?>
отримаємо результат на малюнку 11.3.
Рис. 11.3
При використанні змінних тину string можна використовувати як подвійні так і одинарні лапки. Але між ними є різниця :
<?
$оріІІа='Оболонь';
$8='Пиво $орІІІа';
echo $s;
//виводить Пиво $оріІІа
echo '<br>';
$8="Пиво $оріІІа";
echo $s:
// виводить Пиво Оболонь
?>
Змінна розглядається як масив, якщо до її імені додається значення індекса, взятого у квадратні дужки []. Наприклад
<?php
$а[0] = 10;
$а[1] = 14;
$а[2] = 8;
//Дістали масив $а з трьох елементів
?>
Індексом масиву може бути або ціле число (Integer) або стрічка (string), елементами масиву можуть бути значення будь-якого типу.
<?
$a['name']='shoues';
$a['color']=Yed';
$a['size']=36;
?>
Масив, в якому індексами є стрічки називається асоціативним.
1.4. Операції
Операції, що визначені в мові php, описані в таблицях 1 та 2
Таблиця 1. Арифметичні операції
Приклад |
Назва |
Результат |
$а + $b |
Додавання |
Сума $а і $b |
$а - $b |
Віднімання |
Різниця $а і $b |
$а * $b |
Множення |
Добуток $а і $b |
$а / $b |
Ділення |
Частка від ділення $а на $b |
$а % $b |
Остача |
Остача від цілочисельного ділення $а на $b |
Таблиця 2. Логічні операції
Приклад |
Назва |
Результат |
$а == $b |
дорівнює |
TRUE, якщо $а дорівнює $b. |
$а === $b |
ідентично |
TRUE, якщо $а дорівнює $b і вони одного типу, (тільки в РНР4) |
$а != $b |
не дорівнює |
TRUE, якщо $а не дорівнює $b. |
$а о $b |
не дорівнює |
TRUE, якщо $а не дорівнює $b. |
$а !== $b |
не ідентично |
TRUE, якщо $а не дорівнює $b або вони різних типів, (тільки в РНР 4 і більше) |
$а < $b |
менше |
TRUE, якщо $а строго менше $b. |
$а > $b |
більше |
TRUE, якщо $а строго більше $b. |
$а <= $b |
менше або дорівнює |
TRUE, якщо $а менше або дорівнює $b. |
$а >= $b |
більше або дорівнює |
TRUE, якщо $а більше або дорівнює $b. |
! $а |
Заперечення |
TRUE, якщо $а не TRUE. |
$ а & & |
Логічне «і» |
TRUE, якщо і $а, і $b TRUE. |
$а \\ $b |
Логічне «або» |
TRUE, якщо $a або $b TRUE. |
1.4.1. Стрічкові операції
Основними операціями із стрічками є:
- конкатенація - повертає об'єднання із правого та лівого аргументів.
- присвоєння ('.=') - приєднує правий аргумент до лівого аргументу.
<?
$а = "Hello
$b = $а . "World!": // тепер $b містить "Hello World!"
$а = "Hello ";
$а .= "World!"; // тепер $а містить "Hello World!"
?>
Стрічку можна розглядати і як масив символів
<?
$а='НеІІо';
$с=$а[1];
// с буде мати значення 'е'
?>
Нумерація символів, як і в масивах, починається з нуля.
Функції для роботи зі стрічками наведено у додатку 4.
1.4.2. Операції присвоєння
Крім базової операції присвоєння (=), існують "комбіновані операції" для всіх бінарних, арифметичних І стрічкових операцій, які дають змогу використати значення у виразі, а потім установити його значення в результат цього виразу. Наприклад:
$3 — 3j
$а += 5; // установлює в $а 8,
//ніби ми сказали: $а = $а + 5;
$b = "Hello
$b .= "There!"; // встановлює в $b "Hello There!",
// аналогічно $b = $b . "There!";
1.4.3. Операції інкременту/декременту
PHP підтримує операції pre- і post-інкременту й декременту.
Таблиця 3
Приклад |
Назва |
Ефект |
++$а |
Pre-increment |
Збільшує $а на 1, потім повертає $а. |
$а++ |
Post- |
Повертає $а, потім збільшує $а на 1. |
~$а |
Pre-decrement |
Зменшує $а на 1, потім повертає $а. |
$а— |
Post- |
Повертає $а, потім зменшує $а па 1. |
Наведемо приклад скрипту, який демонструє дію цих операцій:
<?php
echo "<h3>Postincrement</h3>";
$а = 5;
echo "Повинне бути 5:". $а++ . "<br> ";
echo "Повинне бути 6:". $а . "<br>";
echo "<h3>PreincreiTient</h3>";
$а = 5;
echo "Повинне бути 6:". ++$а . "<br>";
echo "Повинне бути 6:". $а . "<br>";
echo "<h3>Postdecrement</h3>";
$а = 5;
echo "Повинне бути 5:". $а- . "<br>";
echo "Повинне бути 4:". $а . "<br>";
echo "<h3>Predecreinent</h3>";
$а = 5;
echo "Повинне бути 4:". -$а . "<br>";
echo "Повинне бути 4:". $а . "<br>";
?>
1.4.4. Передача зовнішніх змінних
Передати зовнішні змінні в РНР-скрипт можна включивши їх в стрічку запиту при виклику скрипта в браузері, тоді вони автоматично будуть доступні всередині скрипту через глобальний асоціативний масив $_GET (див нижче).
1.4.5. Асоціативні масиви
У попередньому розділі ми познайомилися з асоціативними масивами. Асоціативний масив - це масив, у якому індекс не обов'язково повинний бути послідовним рядом числових значень. Індексом масиву може бути будь-яке число рядок. РНР забезпечує набір функцій маніпулювання асоціативними масивами. Це: Next(), Prev(), Reset(), End(), і Кеу().
1.4.6. Посилання на змінні
Іноді зручно мати спосіб посилатися на імена змінних. Тобто ім'я змінної може встановлюватися й використовуватися динамічно. Нормальної змінний привласнюється значення оператором типу $а = "hello" при використанні посилання на змінну береться значення змінної й обробляється як ім'я змінної. У вищезгаданому прикладі, hello, може використовуватися як ім'я змінної, використовуючи два знаки $. Тобто $$а = "world". На цей момент визначені дві змінних і збережені в дереві символів РНР4:
Ім'я змінної Вміст змінної
А hello
hello world
отже, оператори:
echo "$а";
echo $$а;
зроблять точно такий само вивід як і: echo "$а $hello", тобто, вони виведуть рядок:
hello world
Приклад ex04.php.
<? $а= "hello";
$$а = "world";
echo "$а ";
echo $$а;
echo "<br> Другий оператор <br> ";
echo "$a $hello";?>
Отримаємо результат, як на малюнку 11.4.
Рис. 11.4
1.4.7. Математичні вирази
PHP підтримує повний набір математичних операцій, у виразах. Враховується порядок операцій. Наступні оператори, припустимі:
<? $а = 2 + 1 ?> Додавання
<? $а = 2 -1 ?> Віднімання
<? $а = 2 * 1 ?> Множення
<? $а = 2/1 ?> Ділення
<? $а = 2 % 1 ?> Ділення по модулю
підтримуються і дужки і порядок операцій, так, що наступна запис вірний:
<?$а = (2+1)''3+6/3?>
підтримуються С-подібні оператори збільшення += і зменшення -= . Тобто
<? $а +— $b?>
це еквівалентно:
<? $а = $а + $b?>
підтримуються С-подібні порозрядні оператори =& і |=. Тобто.
<? $а&= 4?>
це еквівалентно:
<? $а = $а & 4?>.
1.4.8. Список деяких математичних функцій php
abs - абсолютне значення
acos - арккосинус
asin - арксинус
atan - арктангенс
cos - косинус
cosh - гіперболічний косинус
deglrad - конвертує число в градусах в еквівалент у радіанах
ехр - е в степені...
log10 - логарифм із основою 10
log - натуральний логарифм
max($argl,$arg2,...) - повертає найбільше значення з значень параметрів Sargl, $arg2 ...
pi - значення pi
pow(base,exp) - Повертає base, в степені ехр.
rad2deg - конвертує число в радіанах в еквівалент у градусах
rand - генерує випадкове число
round - округляє число із плаваючою крапкою/АоаІ
sin - синус
sinh - гіперболічний синус
sqrt - квадратний корінь
tan - тангенс
tanh - гіперболічний тангенс
1.4.9. Перевантажені оператори й робота з типами даних
Перевантажений оператор - це оператор подібний наприклад, що може робити різні, ґрунтуючись на типах виразів, до яких він застосовується. Проблема полягає в тому, що РНР розуміє З типи змінних. Integer, Double і String. Коли змінної вперше привласнюється значення, РНР автоматично визначає тип цієї змінної. Тобто:
$а = 1; Тип буде integer
$b = 1.5; Тип буде double
$с = "1Тип буде string.
Тепер, що відбудеться, якщо Ви зробите що-небудь типу: $d = $а + $с; синтаксичний аналізатор розглядає першу частину арифметичного виразу і використовує його для результату, а також характер дії, що повинне бути виконано. У вищезгаданому прикладі, тому що $а - integer, $d буде теж integer, і виконання цілочисельного додавання, дасть результат: $d = 2 Тип integer. Отже: $d = $с + $а Результат : $d = "ІГ'Тип – string Однак, коли використовуються більш складні вирази, це може привести до надзвичайної плутанини. Рішення складається в механізм простого приведення типу. Фактично всі змінні автоматично перетворюються в усі З типи, і тільки внутрішній прапорець відзначає, якого типу змінна, фактично. Наприклад, якщо вказати: $а = 1. Усередині в таблиці ідентифікаторів зберігаються З версії.
Integer: 1 <—flag
Double: 1.0
String: "1"
Функція SetType() може переміщати прапорець, що вказує тип змінної. SetType($a, "double"); Це змусить розглядати $а, як double надалі. Функція GetType() повертає тип. GetType($a) поверне, у цьому випадку, "double". Також існують функції для того, щоб повернути З різних типи без переміщення прапорця типу.
IntVal($a) поверне 1
DoubleVal($a) поверне 1.0
StrVal($a) поверне "1"
перевантажений оператор не змінює характер змінних РНР, але дає Вам деякі інструментальні засоби, для кращої роботи з ними. РНР - не щось, що нагадувало б не цілком розвитий Perl. РНР повинний бути малим і швидким. Perl має справу з пасткою для перевантажених операторів, змушуючи, оператор начебто '+' працювати тільки з числами. Якщо треба підсумувати рядки, потрібно використовувати оператор Як тільки з'являються окремі оператори для кожного типу, це робить мову набагато більш складним. Тобто, Ви не можете використовувати - =' для рядків. Вам доведеться використовувати 'eq'.
Це показано у наступному прикладі ex03.php:
<?$а = 5?>
Змушує $а стати змінної типу INTEGER:
<?echo $а?> <br>
<?$а = 5.0?>
Змушує $а стати змінної типу DOUBLE:
<?echo $а?> <br>
<?$а = "5"?>
Змушує $а стати змінної типу STRING:
<?echo $а?> <br>
Коли ми його запустимо ми отримаємо наступний результат, зображений на рис. 11.5.
Рис. 11.5
1.5. Передача параметрів за допомогою форм
У попередній лабораторній роботі ми розглянули змінні в РНР, і розглядали спосіб передачі зовнішніх даних (змінних) в php-скрипт. Цей спосіб полягав у тому, що імена змінних і їхні значення вписувались безпосередньо в стрічку запиту. Як ви змогли переконатись, цей спосіб є досить незручним для користувача, тому розглянемо інший спосіб передачі параметрів - за допомогою форми.
Форма - складова HTML-документу, яка містить елементи графічного інтерфейсу користувача (поля введення, списки вибору, кнопки, тощо) і призначена для відправки введених користувачем даних для опрацювання на Web-cepBepi.
Опис форми розпочинається тегом <form> І закінчується тегом </ form>, Параметри цього тега, та теги, які описують елементи керування (поля введення, списки вибору, кнопки і т.д.), описані в додатку 1.
Приклад: створити форму для реєстрації користувача чату, яка містить дані (ім'я, прізвище, адресу електронної пошти, псевдоніму користувача (нік), нароль та йоле для повторного вводу паролю).
Створимо файл register.html в якому напишемо наступний код
<html>
<head>
<title> Реєстрація<АііІе>
</head>
<body>
<!-тут починається опис форми->
<forin action="adduser.php" >
Ім'я <input type="text" name="name" inaxlength="20" size="25"><br>
Прізвище <input type="text" naine="surname" maxlength="20" size="25"
><br>
Адреса e-mail<input type="text" name="таіГ' iTiaxlength="20" size="25"
><br>
Пседонім<іпри1 type="text" naine="nik" inaxlength="20" size="25" ><br>
Пароль<Іпри1 type="password" name="password" maxlength="20"
size="25" ><br>
Пароль ще раз<іп-
put type="password" name="conflrm pass" iTiaxlength="20"
size="25"><br>
<input type="submit" уаІие="Зареєструватися">
</form>
<!-кінець форми->
</body>
</html>
(Для ознайомлення з повним текстом статті необхідно залогінитись)