Трохи про PHP.

Інтернет вже давно міцно ввійшов у наше життя. Це сміливе твердження можна доводити або спростовувати багато разів, але так чи інакше все змінюється, а з цим сперечатися ніхто не буде.

Пройшли ті часи, коли багато користувачів персональних комп'ютерів з метою економії дискового простору видаляли програму "Інтернет Експлорер" з усіма нами обожнюваної операційної системи, бо просто не мали потребу в ній. Тепер навіть ті, у кого немає доступу до Павутині, намагаються не чіпати цю програму, так як формати мережі Інтернет давно вже перейшли в інші сфери нашого комп'ютерного життя. А вже якщо в комп'ютері оселився модем, уникнути наявності браузера просто неможливо, тому що дуже хочеться хоч одним оком подивитися, а що ж там, за межею телефонної лінії? І коли знайомство відбулося, відмовитися від переваг мережі вже не так-то просто. Через деякий час починаєш усвідомлювати, що треба якось вкласти себе і свої ідеї і проявитися на безкрайніх просторах Глобальної мережі. Зробити свою сторінку стало навіть престижно, і хай у ній мало корисного, а лічильник фіксує тільки ваші не часті відвідини, зроблене може стати початком серйозного проекту і змінити все Ваше життя.

Подорожуючи по просторах глобальної мережі Інтернет, Ви, звичайно ж, не раз звертали увагу на гіперпосилання, що часом досягають зовні дуже великих розмірів і просто дивують наявністю дивних символів. І звичайно, всі звертали увагу на форми, які потрібно було заповнити і отримати щось натомість. Але мало хто замислюється над тим, як все це працює і що все це означає.

Пропоную Вам поринути в світ програмування. Цей світ багато в чому ні на що не схожий, але в нього є свої неписані закони та правила, свої плюси і мінуси. Світ, який відкривається перед нами, видно ще тільки на один крок, але цей крок треба подужати, а далі йти буде вже набагато легше.

Історія РНР

Починати потрібно завжди з найпростішого, і зараз я спробую познайомити Вас з програмуванням на скриптовій мові РНР. РНР (читається як пі-ейч-пі) з'явився на світ восени 1994 року, і його творець – Расмус Лердорф – використовував мову в своїх цілях, для того, щоб мати уявлення про тих людей, які відвідують його сайт і знайомляться з його резюме.

За словами автора, РНР був написаний буквально за день в проміжках між діловими зустрічами. Спочатку це була просто непоказна CGI-оболонка, написана на мові Perl, і служила вона виключно для специфічних цілей. Для довідки – СGI (Common Gateway Interface) – загальний шлюзовий інтерфейс, є стандартом, який призначений для створення серверних додатків HTTP.

Такий додаток, яке називають шлюзом або CGI-програмою, запускається сервером в реальному режимі часу. Сервер передає запити користувача CGI-програмі, яка їх обробляє і повертає результат своєї роботи на екран користувача.

Таким чином, відвідувач отримує динамічну інформацію, яка може змінюватися в результаті впливу різних факторів. Сам шлюз (скрипт CGI) може бути написаний на різних мовах програмування – C / C + +, Fortran, Perl, TCL, Unix Schell, Visual Basic, Apple Script та інших подібних мовах. Але у випадку з РНР, для написання його в первинному варіанті була вибрана мова Perl, як найбільш простий і доступний.

В результаті подальшої експлуатації з'ясувалося, що оболонка має маленької продуктивністю, і автор змушений був переписати все наново, але вже на мові С, що дозволило збільшити швидкість роботи РНР. Користувачі сервера, де розташовувався сайт з першою версією РНР, попросили собі такий же інструмент, і хоч автор не припускав, що хтось інший буде користуватися цією мовою, досить швидко РНР переріс в самостійний проект, і на початку 1995 року вийшла перша відома нам версія продукту. Ім'я цього першого пакету було Personal Home Page Tools (засоби для персональної домашньої сторінки). На той момент РНР володів більш ніж скромними можливостями. Він мав найпростіший аналізатор коду, який розумів декілька спеціальних команд, а також різні утиліти для використання на домашній сторінці, необхідні для побудови таких корисних речей, як гостьова книга, лічильник, чат, системи статистики і тому подібне. До середини 1995 року мова була грунтовно перероблений, з'явилася обробка форм, були додані функції роботи з базами даних, і в такому вигляді вийшла друга версія продукту.

Сьогодні РНР – це потужний кросплатформний набір засобів, який розташовується на сервері і призначений для обробки спеціального коду, вбудованого в HTML-сторінку. Завдяки цьому, з'являється можливість легко створювати динамічні сайти. Файли, створені таким чином, зберігаються і обробляються на сервері, і коли відвідувач запитує документ з РНР, скрипт обробляється не браузером відвідувача, як, наприклад, Java Script, а сервером, і відвідувачеві передаються вже тільки результати роботи. Точно так само працює CGI-програма, написана на С або Perl. Але, на відміну від CGI, код РНР можна вбудовувати в будь-яке місце HTML-сторінки, що є основною перевагою по відношенню до CGI. А крім того, сама мова РНР дуже простий для вивчення і не вимагає яких-небудь специфічних знань. Наприклад, особисто мені цілком вистачило досвіду, набутого років десять тому на уроках інформатики в школі, де ми вивчали мову Бейсік. Незважаючи на настільки райдужну характеристику, є у РНР і недоліки. Варто відзначити досить повільну (в порівнянні з програмами на CGI) роботу скриптів РНР, а також складність написання великих і складних програм. Так чи інакше, РНР залишається інтерпретованою мовою, що неодмінно веде до погіршення продуктивності у разі дуже великих і складних програм, але, для виконання нескладних маніпуляцій на сайті, РНР – кращий вибір. Недарма до середини 2000 року РНР використовувався більш ніж на 2,5 мільйона сайтів!

Особливості РНР

Як і у всякого мови програмування, у РНР є свій синтаксис. Він дуже схожий на синтаксис мови С або Perl. Програмісти, що пишуть на цих мовах, зможуть освоїти РНР буквально за кілька днів. Але навіть якщо Ви ніколи не програмували, РНР піддасться Вам легко і забезпечить базу для переходу на мови більш складного рівня. Всі команди досить логічні, а правила прості. Синтаксис включає в себе оператори, розділені між собою крапкою з комою. Одна з основних помилок початківців програмістів – відсутність крапки з комою між операторами. На щастя, помилки в РНР за замовчуванням видаються на екран (На відміну від CGI, де всі помилки записуються в лог-файл), і знайти їх при певній уважності і досвіді не складе великих труднощів. Тим більше що розумний інтерпретатор підкаже номер рядка, в якій сталася помилка.

Для програмування на РНР Вам знадобиться будь-який текстовий редактор, але для зручності він повинен забезпечувати підсвічування синтаксису та нумерацію рядків. Я використовую CuteHTML, що входить в комплект постачання непоганого FTP-менеджера CuteFTP останніх версій. Редактор дуже зручний, без зайвих непотрібних функцій, сам вбудовується в контекстне меню, не вимагає інсталяції і має все необхідне для програмування. Ще нам знадобиться комплект для роботи з РНР. Як правило, використовується Apache + PHP, хоча це і не обов'язково, підходить будь-який сервер, наприклад IIS Microsoft. Але перший варіант безкоштовний і має велику підтримку документацією (в тому числі російською мовою) та форумами, де можна з'ясувати будь-яке питання.

Тепер давайте перейдемо до справи – напишемо наш перший скрипт. Для того щоб сервер знав, у якому з файлів є код РНР, його розширення (файлу) потрібно зробити або phtml, або php3, або php. Строго кажучи, може бути призначено будь-яке розширення, але я рекомендую Вам з метою сумісності завжди використовувати phtml. Кожна команда в РНР як правило починається з "<? Php" і закінчується "?>" (Тут і далі без лапок). Як Ви пам'ятаєте, кілька команд розділяються крапкою з комою. У будь-якому місці скрипта РНР можна поставити коментар, починається він з "/*", а закінчується – "* /" Якщо коментар маленький і займає тільки один рядок, можна поставити "/ /" і таким чином легко закоментувати будь-який рядок до її кінця. Як завжди, пробіли, символи табуляції та перекладів рядки просто ігноруються і можуть застосовуватися для поліпшення читабельності коду РНР.

Висновок на екран і змінні в РНР

РНР дуже легко дозволяє організувати виведення тексту на екран. Розглянемо приклад скрипта:

<?php
echo "Привіт, світ!";
?>

Цей скрипт може бути розташований у будь-якому місці HTML-документа, і сам по собі він не несе нічого корисного, так як тільки виводить на екран фразу "Привіт, світ!". Але таким чином ми знайомимося з однією з найбільш поширених команд РНР – висновок інформації на екран користувача. Для того щоб надати нашій скрипту корисні функції, давайте познайомимося із змінними. Змінна характеризується ім'ям, типом і значенням. Ім'я може бути будь-яким і включати в себе цифри, букви англійського алфавіту і дозволені символи (наприклад, символ підкреслення або тире). За типом змінні діляться на цілі, з плаваючою комою і символьні. Значення відповідно до типу може бути практично будь-яким. Наприклад, мінлива a = 5. Це говорить нам про те, що ім'я у змінної – а, тип – цілочисельний, значення – 5. Ось ще приклади імен і значень:

<?php
	$name = 6;
	$h12 = 4.89;
	$file_type = "path/index.phtml";
$ Os = "РНР для всіх!";
?>

Як бачите, всі змінні в РНР (але не тільки в ньому) повинні починатися з символу $, що дозволяє інтерпретатору безпомилково відрізняти їх від команд РНР. У першому рядку нашого скрипта змінної $ name присвоюється значення 6, і ця мінлива автоматично стає целочисленной. До речі кажучи, заздалегідь описувати тип змінної не потрібно, як в мовах Pascal або Visual Basic, але хоча поділ на типи чисто умовне, кожна змінна автоматично прагне використовувати правильний тип, відповідно до значення. Другий рядок коду присвоює змінної $ h12 значення 4.89, яке є значенням з плаваючою комою. Третя і четверта строчки коду присвоюють своїм змінним значення, що є символьними рядками. Все, що закладено в лапки (включаючи цифри), буде інтерпретовано як символьна рядок. Якщо змінні не визначені раніше, але використовуються, їх значення приймається рівним або нулю, або порожній рядку залежно від типу.

Як і в будь-якій мові, над змінними можна здійснювати будь-які арифметичні дії, і це не вимагає присутності спеціального оператора, достатньо вказати змінну для результату, знак рівності і перерахувати в природному порядку змінні або значення з необхідними арифметичними знаками. Приклад:

<?php
	$a = 5;
	$b = 3;
	$c = 4;
	$d = $a+$b-$c;
	echo $d;
?>

Результат роботи скрипта – виведення на екран цифри 4. Підтримуються всі арифметичні операції і функції, багаторівневі дужки, логічні операції, операції збільшення або зменшення на одиницю і багато інше. Крім того, дуже просто і природно організується порівняння якщо – то – інакше. Для цього в РНР застосовується конструкція if () {} else {}. Є різні варіанти синтаксису цього оператора, але цей – основний, і найлогічніший з усіх. (Якщо) if (умова) (то) {виконується те, що укладено в лапки} (інакше) else {виконується те, що укладено в лапки}. Після лапок ставити крапку з комою, як звичайно між операторами, не обов'язково. Але всередині лапок – поділ операторів між собою проводиться тільки через крапку з комою. Допускається вкладення декількох операторів перевірки один в один. У цьому випадку треба бути дуже уважним до кількості закриваючих лапок, оскільки за відсутності навіть однієї інтерпретатор видасть помилку коду. Розглянемо нескладний приклад:

<?php
	$a = 5;
	$b = 9;
	if ( $a == $b ) { echo $b-$a; } else { echo $b.$a; }
?>

При порівнянні на істину застосовується два знаки рівності для того, щоб інтерпретатор міг легко відрізнити порівняння від привласнення. Результат роботи скрипта – 95, т.к $ a не дорівнює $ b, а команда echo $ B. $ a; (між змінними стоїть крапка, а не знак арифметичної операції) виводить поспіль зазначені змінні. Нерівність (брехня) позначається символами! =, Допустимі всі інші арифметичні і логічні символи і оператори (наприклад, or, and,>, <= і т.д.).

У РНР є засоби швидкої зміни змінної на одиницю в сторону збільшення або зменшення. Для цього потрібно вказати ім'я змінної і за ним, без знака рівності, – підряд два плюси чи мінуси відповідно. Наприклад, $ a + +; – змінна $ a буде збільшена на одиницю. Підтримується одночасне присвоювання одного значення кільком змінним – $ a = $ b = 4;. Обидві змінних будуть рівні чотирьом. Ось ще кілька прикладів нестандарти арифметичних операцій в РНР:

<?php
$ B = $ a = 5; / / присвоюємо значення змінних $ a та $ b
$ C = $ a + +; / / подальше збільшення, присвоюємо $ c
/ / Початкове значення $ a (5)
$ E = $ d = + + $ b; / / попереднє збільшення, присвоюємо $ d і $ e
/ / Збільшене значення $ b (6) тут і $ d і $ e рівні 6
$ F = double ($ d + +); / / привласнити подвоєне значення $ d до його збільшення,
/ / То є 2 * 6 = 12, змінної $ f
$ G = double (+ + $ e); / / привласнити подвоєне значення $ e після його збільшення,
/ / То є 2 * 7 = 14, змінної g
$ H = $ g + = 10; / / спочатку збільшити значення $ g на 10, що дає в
/ / Результаті 24, а потім присвоїти це значення
/ / Змінної $ h, що також дає 24
?>

Вкладення файлів в РНР

Кожен, хто зробив хоч одну сторінку в мережі, стикався з проблемою зміни тих чи інших даних на ній. Звичайно, це не складно коли сторінок декілька або вона одна :-), але якщо Ви зробили великий сайт, маленьке доповнення (наприклад, в меню) в сотні файлів може перетворитися на справжній кошмар! РНР вирішує цю проблему в раз, дозволяючи вкладати одну сторінку в іншу. Досягається це за допомогою операторів REQUIRE та INCLUDE. Після цих операторів у круглих дужках повинен стояти шлях до вкладаємо файлу. Наприклад, INCLUDE ("text.phtml"). Різниця між зазначеними операторами полягає в тому, що REQUIRE підміняється вмістом зазначеного файлу і може бути використаний тільки один раз, а INCLUDE – вставляє і виконує вміст зазначеного файлу, що дозволяє застосувати його кілька разів, наприклад у циклі. У будь-якому випадку, при виконанні файлу інтерпретатор РНР (правильно казати – парсер) перебуває в стані HTML, і для його включення код треба укласти в конструкцію <? Php …?>. Вкладення файлів можуть відбуватися тільки усередині серверного простору, доступного РНР. Іншими словами, Ви не можете використовувати в імені файлу http://

Досить часто зустрічаються сайти, посилання яких включають в себе спеціальні символи – &,?,%. Все це може бути і результатом роботи РНР. Справа в тому, що якщо в кінці посилання додати? Ім'я = значення, це значення буде доступно під цим же іменем у файлі, куди вказує посилання. Якщо необхідно додати кілька імен, вони можуть бути розділені знаком &. Тепер ми можемо зробити сайт, який буде доступний за допомогою тільки однієї сторінки. А всю іншу інформацію ця сторінка буде виводити на підставі отриманих за посиланням даних. Вид такого посилання буде приблизно таким: http://імя.ru/index.phtml?link=1. Одиниця в кінці посилання і є наш параметр, який буде підставлятися у файлі index.phtml. Наприклад, ось так:

<html>
... Початок файлу ...
<?php
	$url = "";
	if ($link == 1) { $url = "name1.phtml"; }
	if ($link == 2) { $url = "name2.phtml"; }
	if ($link == 3) { $url = "name3.phtml"; }
	if ($link == 4) { $url = "name4.phtml"; }
	if ($url == "") { $url = "error.phtml"; }
	INCLUDE ($url);
?>
... Кінець файлу ...
</html>

Зверніть увагу, написаний нами код враховує ситуацію, коли відвідувач з різних причин вказав неправильний параметр. У цьому випадку телефон заздалегідь заготовлена сторінка з повідомленням про помилку. Якщо ж параметр відповідає якому-небудь з файлів сайту, він у код файлу index.phtml вкладається і виконується. Таким чином, початок і кінець залишаються однаковими, а змінюється тільки середина. І будь-які зміни вже не здаються такими страшними, як раніше. Адже зробити їх треба тільки в одному файлі, а відіб'ється це на всьому сайті.

Є й інший шлях. Його суть полягає в тому, що у РНР є доступ до так званих змінних оточення сервера. Одна з цих змінних – запитуваний відвідувачем шлях щодо адреси сайту. І цей шлях стає нам доступний для використання. У цьому випадку посилання у нас будуть такого виду: http://імя.ru/index.phtml?patch/name.phtml. Друга частина посилання – patch / name.phtml – буде нам доступна, якщо ми вважаємо параметр $ QUERY_STRING. Наприклад, так: $ add = $ QUERY_STRING. Тепер змінимо наш головний файл index.phtml, щоб все працювало автоматично. А якщо запитуваний параметр не буде вказано (Правильно кажучи – буде дорівнює пустому рядку), щоб щось відкрити, привласнимо змінної $ add ім'я файлу, який повинен бути відкритий як головна сторінка. Нехай це буде файл main.phtml. Тоді код буде виглядати наступним чином:

<html>
... Початок файлу ...
<?php
	$add = $QUERY_STRING;
	if ($add == "") { $add = "main.phtml"; }
	INCLUDE ($url);
?>
... Кінець файлу ...
</html>

Як бачите, ще простіше. Але відразу хочу застерегти Вас, що цей метод хоч і простіше першого, але відкриває шлях до отримання інформації про сервер, де розташований сайт з такою організацією структури. Зловмисник або просто цікавий людина за наявності певних обставин і знань зможе багато дізнатися про Ваш сервер, а це відкриває прямий шлях до злому. Так що будьте обережні і не станьте причиною великих неприємностей. Захиститися від подібних проблем можна, але це вже зовсім інша історія.

Приклад лічильника відвідувань на РНР

Якщо Ви все уважно прочитали, Ви без праці отримаєте стартовий капітал знань, і він дасть Вам можливість самостійно надалі вивчати мову РНР. І насамкінець я пропоную Вам познайомитися з кодом скрипта, який дозволить організувати на будь-який зі сторінок Вашого сайту лічильник відвідувань. Цей лічильник не буде повнофункціональним, тому що має досить багато недоліків, але як приклад застосування РНР цілком годиться. У будь-якому місці Вашої сторінки (але тільки там, де це потрібно) вставте наступний код:

<p> Відвідувачів сторінки - 
<?php
	$filename = "counter.dat"; 
	$fp = @fopen($filename,"r"); 
if ($ fp) {$ counter = fgets ($ fp, 10); fclose ($ fp);} else {$ counter = 0;} 
	$counter++; 
	echo $counter; 
	$fp = @fopen($filename,"w"); 
	if ($fp) { $counter=fputs($fp,$counter); fclose($fp); } 
?></p>

У тому ж каталозі, що і Ваша сторінка, створіть файл counter.dat, закачайте його на сервер і за допомогою свого FTP-менеджера змініть атрибути цього файлу таким чином, щоб він був доступний для запису. Зазвичай потрібно встановити галочки на всіх атрибутах файлу. Якщо Ви цього не зробите, скрипт буде постійно видавати помилку при спробі запису в файл. До речі, для того щоб цього не відбувалося, варто поставити перед командою запису і відкриття файлу символ @, він скасує виведення повідомлення про виниклу помилку на екран відвідувача. Коли атрибути змінені, поновіть Вашу сторінку на сервері і звернетеся до неї на її адресу в браузері. Ви побачите, що там, де Ви вставили код РНР, з'являється рядок: "Відвідувачів сторінки -" і далі число, що відповідає кількості відвідувань. І ніякого сліду коду! Він був опрацьований на сервері в Інтернеті, а браузеру просто переданий результат цього виконання.

Алгоритм цього скрипта дуже простий. У першому рядку ми присвоюємо обраної змінної ім'я файлу, де буде зберігатися число відвідувань. У другій – відкриваємо з'єднання з цим файлом для читання. Далі перевіряємо успішність з'єднання, і якщо файл існує і він доступний для читання, зчитуємо з нього рядок з 10 байт, чого цілком достатньо для лічильника, і закриваємо з'єднання з файлом. Збільшуємо показання лічильника на одиницю і виводимо його нове значення на екран. На наступному етапі нам потрібно записати нове значення лічильника, і для цього ми знову відкриваємо з'єднання (дескриптор) з файлом, але вже на запис з очищенням вмісту файлу. Якщо воно успішно – записуємо туди нове значення лічильника і закриваємо дескриптор файлу. Ось і все.

На цьому наше перше знайомство з мовою РНР будемо вважати закінченим. Звичайно, залишилося ще дуже багато корисного і цікавого, але, на жаль, все відразу охопити неможливо. Втім, для того і придумали розумні люди Мережу, щоб зробити доступним недоступне. В Інтернеті є дуже багато корисних ресурсів на тему РНР, і при мінімальних навичках роботи в пошукових системах Ви без праці відшукайте їх. А я пораджу Вам підписатися на розсилку РНР для всіх!, в якій регулярно раз на тиждень з'являються нові статті, приклади скриптів, є розділ питань-відповідей, а також багато іншої корисної інформації. Знайти форму для підписки і підписатися можна за адресою в мережі http://virtual.bresttelecom.by/php.

Там же викладено всі попередні випуски розсилки. А за адресою http://virtual.bresttelecom.by Ви зможете подивитися, як все це працює в дії. Все, що Ви зустрінете на цьому сайті, – зроблено на РНР. Чат, форум, приватні оголошення, система статистики – це лише мала частина тих можливостей, що дає нам програмування на мові РНР.

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*