Лабораторна робота на тему Використання констант в сценаріях РНР
« НазадЛабораторна роботаТема: «Використання констант в сценаріях РНР». Мета: розібратися, як створюються константи та відображаються їх значення.
Хід роботиСтворіть Php-cторінку найпростішими засобами. Почніть зі створення простий Php-cторінки. У нашому випадку є тільки одна команда, echo, це команда серверу вивести текст в лапках. Тобто, якщо ви збережете цю сторінку і захочете переглянути її своїм браузером, браузер відобразить наступний текст. Збережете текст Php-cторінки у файл із іменем registration_action.php . Відкрийте браузер з адресою http://localhost/registration_action.php. Результат роботи вашого браузера буде подібний тому, що ви можете бачити нижче на Рисунку 1. Таким чином, ви написали сторінку з використанням PHP. Змінні Змінна служить контейнером і іменем для даних. З того моменту, як ви привласнили змінної деяке значення, PHP завжди, зустрівши цю змінну, замінить її на приписане значення. Розглянемо приклад, для цього внесіть наступні зміни у свою сторінку. Збережіть файл і оновіть сторінку вашого браузера. Результат виконання на Рисунку 2. Для об'єднання або конкатенації двох текстових елементів використовується крапка. Ви можете об'єднати в такий спосіб будь-яке число рядків або текстових елементів. Константи Ви можете вільно змінювати значення змінної, але іноді буває корисно задати змінну, значення яке не може бути змінене. Такі об'єкти називаються константами. Наприклад, ви можете визначити константу для зберігання заголовка, який буде виводитися на кожній сторінці: <?php define("PAGE_TITLE", "Workflow Registration"); ?> <html> <title><?php echo PAGE_TITLE ?></title> <body> <p>You entered:</p> ... (Цей приклад може здатися тривіальним, але надалі ви переконаєтеся, що таке визначення корисне, коли мова йде про декілька сторінках.) Зверніть увагу, що в цьому операторові задається пара: ім'я константи і її значення. Якщо ви спробуєте змінити значення константи після того, як воно було визначено, то отримаєте повідомлення про помилку. При посиланні на константу в елементі title ми не використовували знак долара, як це робиться перед іменами змінних. Ви можете привласнювати константам довільні імена, але, згідно із прийнятими правилами, імена констант складаються із прописних букв. Дотепер ми використовували команду echo для відображення інформації, але це досить громіздка конструкція. У тих випадках, коли вивести потрібно один елемент, існує більш постій спосіб. Для виводу даних в PHP існує оператор виводу і ви можете передати дані за допомогою конструкції <?= ?> : <?php define("PAGE_TITLE", "Workflow Registration"); ?> <html> <title><?= PAGE_TITLE ?></title> <body> <p>You entered:</p> ... Зверніть увагу, що за оператором виводу не стоїть крапка з комою.
Створення й використання форм в PHP Мова PHP споконвічно розроблявся як мова для Web-програмування. Звичайно, ви можете запустити PHP з командного рядка, але фактично випадки використання PHP поза Web-додатків дуже рідкі. Як правило PHP використовується разом з Html-формами. Ви створюєте форму з використанням HTML, потім користувач вводить дані в цю форму і ініціює її передачу, браузер пересилає дані серверу у формі масиву. Створення форм в HTML Почнемо зі створення сторінки реєстрації для вашого додатка. На цій сторінці користувачі будуть уводити свої дані, а ви будете затверджувати їх, тобто виконувати деякі перевірки, перш ніж переслати дані в базу. Для початку просто створимо форму для введення. Створимо новий файл registration.php і помістимо в нього наступний текст. Таким чином, ми маємо просту форму, яка втримується усередині Html-Тегу form, у ній є текстове поле для введення пароля і клавіша для відсилання даних. Збережіть цей текст у файл із іменем registration.php і помістіть файл у кореневу папку з документами для вашого сервера, потім відкрийте браузер з адресою http://localhost/registration.php. Результат роботи вашого браузера буде схожий на те, що можна бачити нижче, на рисунку 3. Зверніть увагу на те, що в полі для введення пароля не відображаються символи, які ви набираєте, замість цього з'являються зірочки. Що ж відбувається, коли користувач натискає клавішу GO? Передача даних з форми Розглянемо докладніше формат елемента form нашої форми<form action="registration_action.php" method="GET"> У цьому елементі визначено два параметри. Перший, action, повідомляє браузер куди посилати інформацію. У нашому випадку посилання веде до того файлу, який ми створили раніше, registration_action.php. Другий параметр, method, повідомляє браузер як передавати дані. Подивимося, як це працює. Введіть які-небудь дані й натисніть кнопку GO. Ви побачите щось схоже на Рисунок 4. У тому випадку, якщо ви не ввели дані, але нажали кнопку, форма буде працювати також, оскільки в нас поки ще не налагоджене приймання введених даних. Зверніть увагу на URL, який з'явився в поле адреси браузера.http://localhost/registration_action.php?name=roadnick&email= ibmquestions%40nicholaschase.com&pword=supersecretpassword Зверніть увагу, що кожному елементу форми в URL відповідає пара ім'я=значення і ці пари розділені амперсандами. Такий вид URL обумовлений тим, що ми використовували як метод передачі GET. Далі ми розглянемо використання методу POST. Приймання даних з форми Розглянемо, яким чином дані, введені в Html-форму, можна зробити доступними для обробки Php-cторінки. Внесіть наступні зміни у файл registration_action.php:... Значення змінних будуть тепер вибиратися по імені з масиву $_GET. Трохи нижче ми поговоримо про масиви докладніше, а зараз спробуйте обновити віконце браузера, ви побачите, що введені нами дані з'явилися на своїх місцях, як показано на рисунку 5. Ви можете витягти будь-яку частину переданої інформації з імені, але є і інші можливості роботи з масивами. Масиви В PHP можна організовувати масиви даних, тобто списки значень, це дозволяє легко переміщати одночасно цілі групи даних. Наприклад, створимо масив із трьох елементів і передамо його для виводу на сторінку: $formnames = array("name", "email", "pword"); echo "0=".$formnames[0]."<br />"; echo "1=".$formnames[1]."<br />"; echo "2=".$formnames[2]."<br />"; Функція array() повертає змінну, яка є масивом. ( Про те, що така функція, ми будемо говорити пізніше, поки ж досить розуміти, що функцію можна викликати і що вона повертає значення того або іншого типу, яке ви приписуєте змінної.) Результат роботи цього скрипта буде таким: 0=name<br /> 1=email<br /> 2=pword<br /> Помітьте, що перше значення в масиві має індекс, рівний 0, але не 1. Помітьте також, що ми виділяємо потрібне значення, додавши індекс у квадратних дужках до імені масиву. Подібним же чином ми одержували доступ до значень змінної форми. Змінна $_GET є іменем масиву спеціального типу, асоціативного масиву, до елементів якого звертаються не по індексах, а по ключах. У той момент, коли ви відсилаєте свою форму, ви по суті справи створюєте асоціативний масив: $_GET = array("name" => "roadnick", "email" => "ibmquestions@nicholaschase.com", "pword" => "supersecretpassword"); Саме цей факт дозволяє вам згодом виділити окремі значення, наприклад, $_GET["name"], імена змінних у цьому випадку відіграють роль ключів.
Одержання інформації про масив Асоціативні масиви корисні при передачі даних між формами, але при їхньому використанні може виникнути труднощі, далеко не завжди відома структура масиву. Така ситуація може бути, наприклад, якщо асоціативний масив був отриманий у результаті виконання запиту до бази даних. В PHP є дві функції, які полегшують використання таких масивів: Функції array_keys() і array_values() повертають звичайні масиви, до елементів до яких можна звертатися за допомогою числових індексів, як показано нижче на рисунку 6. Цей спосіб роботи з масивами також має незручності. Наприклад, ви можете не знати, скільки всього елементів в асоційованому масиві. В PHP існують і інші способи обігу з асоційованими масивами. Наступним кроком ми розглянемо два такі способи.
Використання циклу for-next Завдання послідовне обробки деякого числа однотипних значень виникає дуже часто. Для її виконання застосовується така конструкція як цикл. От один із прикладів циклу:for ($i = 0; $i < 10; $i++) { echo $i . " "; } Результат його роботи буде наступним:0 1 2 3 4 5 6 7 8 9 Розглянемо синтаксис вираження for. Спочатку PHP приписує значення 0 змінної $i. Цикл триває доти, поки значення змінної $i залишається менше 10, на кожному кроці циклу значення змінної $i збільшується на одиницю. Оскільки в нас є можливість довідатися, скільки всього значень містить масив $_GET, ми легко можемо організувати цикл, який відобразить усі значення, передані нам з форми. Функція sizeof() повертає число елементів масиву, у нашому випадку масиву $_GET. Ця функція зупиняє виконання циклу на останньому елементі масиву, результат роботи циклу показаний нижче на рисунку 7. Для роботи з асоційованим масивом $_GET ви можете використовувати і інший тип циклу, цикл із ключовим словом foreach.
Використання циклу foreach Асоційовані масиви настільки часто використовуються в PHP, що для роботи з ними була створена спеціальна конструкція, яка дозволяє одержувати доступ до даних, минаючи ключі. Замість цього ви можете використовувати цикл foreach, він дозволяє маніпулювати з даними масиву прямо. Давайте розглянемо приклад коду:... <?php foreach ($_GET as $value) { echo "<p>" . $value . "</p>"; } ?> На першому кроці циклу буде відображено перше значення з масиву $_GET, це значення буде приписано змінної $value, потім це значення виводиться командою echo. Потім цикл повторюється і змінній $value приписується друге значення і так далі, цикл працює доти, поки в масиві $_GET ще залишаються неопрацьовані елементи. Результат роботи цього циклу буде наступним: <p>roadnick</p> <p>ibmquestions@nicholaschase.com</p> <p>supersecretpassword</p> Ця конструкція дозволяє витягати не тільки значення елементів асоційованого масиву, але й ключі:... <?php foreach ($_GET as $key=>$value) { echo "<p>".$key." = " . $value . "</p>"; } ?< ... Такий варіант коду приведе нас до результату, який ми вже бачили вище.
Повторювані значення у формах Іноді виникає ситуація, коли у формі повинно бути введено кілька значень для змінної з тим самим іменем. Прикладом може служити поле пароля pword. Оскільки користувачі не можуть бачити символи пароля, які вони набирають, то ви можете попросити їх ввести пароль двічі, для того щоб переконатися, що вони не зробили помилку при введенні. Зверніть увагу, що ім'я поля pword трохи змінилося. Оскільки це поле повинно містити кілька значень, то воно саме стало масивом. Таким чином, масив переданих даних для цієї форми буде містити в якості одного зі своїх елементів інший масив. Коли ви натиснете кнопку відправлення форми, то в полі адреси виникне наступний URL:http://localhost/registration_action.php?name=roadnick&email=ibmquestions%40nicholas chase.com&pword[]=supersecretpassword&pword[]=supersecretpassword При цьому в процесі обробки буде створений масив: $passwords = array("supersecretpassword", "supersecretpassword"); $_POST = array("name"=>"roadnick", "email"=>"ibmquestions@nicholaschase.com", "pword"=>$passwords); У цьому варіанті для перегляду значення пароля ви повинні звертатися до відповідної змінної як до масиву із числовим індексом:... foreach ($_GET as $key=>$value) { echo "<p>".$key." = " . $value . "</p>"; } $passwords = $_GET["pword"]; echo "First password = ".$passwords[0]; echo "<br />"; echo "Second password = ".$passwords[1]; ... Якщо ви відішлете форму (не забудьте обновити сторінку), то можете помітити деякі зміни, як показано нижче на рисунку 9. Зверніть увагу, у поле, де раніше відображався пароль, з'явилося слово Array, елементи самого масиву відображені нижче.
Відмінності методів GET і POST Дотепер для передачі даних з форми ми використовували метод GET, головною незручністю й обмеженням цього методу є той факт, що передані дані містяться прямо на адресу URL. У деяких випадках це цілком припустиме, в інших -- немає. Наприклад, вам потрібно передати з форми великий блок даних з поля типу textarea, звичайно такий тип використовується для розміщення коментарів. Як правило, WebрСервер обмежує число символів, які можна помістити в UrlдАдресу, у такий спосіб передати дані за допомогою методу GET просто неможливо. Згідно із прийнятими стандартами технології WebаПрограмування, метод GET не слід використовувати для передачі даних у скрипты, які можуть мати "побічні ефекти", а фактично будь-який скрипт, у якім відбувається обробка даних, має цю властивість. Дотепер ми тільки відображали введені дані, обробки не відбувалося, але якщо ми прагнемо додати запис у базу даних, те це вже обробка, яка може мати побічний ефект. Той факт, що метод GET передає дані в UrlрАдресі відкритим, тобто, доступним для перегляду образом, не тільки впливає на безпеку системи, але має й інші незручності. Наприклад, користувач може зробити закладку на цю адресу, що приведе до того, що операція буде виконуватися багато раз; пошукові машини, які індексують UrlрАдреси, можуть перехопити дані, що направляються у вашу базу і так далі. Тому в більшості випадків має сенс користуватися методом POST, який передає дані в тілі запиту, а не в заголовку, як метод GET.
Використання методу POST Зовні використання методу POST мало відрізняється від використання методу GET. Спочатку внесемо зміни у файл registration.php:... <h1>Register for an Account:</h1> <form action="registration_action.php" method="POST"> Username: <input type="text" name="name" /><br /> ... При відсиланні форми ви побачите, що зміст UrlрАдреси змінилося:http://localhost/registration_action.php Зміни потрібні й у файлі registration_action.php, для приймання даних замість масиву $_GET буде використовуватися масив $_POST:... Подальша робота з масивом $_POST відбувається точно так само, як і з масивом $_GET. Контроль даних: умовний оператор if-then Вище ми попросили користувача ввести пароль двічі. Тепер подивимося, як можна перевірити, не чи було зроблено помилки при введенні пароля. Для цього використовуємо умовний оператор if-then:... У заголовку умовного оператора в дужках поміщене деяке вираження (у нашому прикладах це $passwords[0] == $passwords[1]), яке може бути істинно (TRUE) або ложно (FALSE). Якщо воно істинно, то PHP виконує той оператор, який іде за умовним вираженням, це може бути блок операторів у фігурних дужках. Якщо воно ложно, що виконується блок, що випливає за ключовим словом else, а якщо його ні, то скрипт переходить до виконання наступного оператора. Зверніть увагу на те, що ми написали $passwords[0] == $passwords[1], а не $passwords[0] = $passwords[1], тобто використовували подвійний знак рівності. Це не випадково. Простий знак рівності працює як оператор присвоювання, тобто, значення $passwords[0] у цьому випадку просто стане рівним $passwords[1]. Нам же треба зовсім не це, ми прагнемо зрівняти значення змінних і тому використовуємо оператор порівняння -- подвійна рівність. Нижче, на Малюнку 10, показана сторінка, яку побачить користувач у тому випадку, якщо він зробив помилку при введенні пароля. Для формування більш складних логічних виражень можна застосовувати логічні оператори, наприклад, оператор И (&&) і оператор АБО (||). Розглянемо наступне вираження:if (($today == "Monday") && ($status == "Not a holiday")) { echo "GO TO WORK!!!"; } Значення логічного вираження в дужках буде істина (TRUE) у тому випадку, якщо сьогодні понеділок (Monday) И цей день не є святковим. З повагою ІЦ "KURSOVIKS"! |