Інтернет вже давно міцно увійшов в наше життя. Це сміливе твердження можна доводити або спростовувати багато разів, але так чи інакше все змінюється, а з цим сперечатися ніхто не буде.
Подорожуючи по просторах глобальної мережі Інтернет, Ви, звичайно ж, не раз звертали увагу на гіперпосилання, які часом досягають зовні дуже великих розмірів і просто дивують наявністю дивних символів. І звичайно, все звертали увагу на форми, які потрібно заповнити і отримати щось натомість. Але мало хто замислюється над тим, як все це працює і що все це означає.
Пропоную Вам зануритися в світ програмування. Цей світ багато в чому ні на що не схожий, але у нього є свої неписані закони і правила, свої плюси і мінуси. Світ, який відкривається перед нами, видно ще тільки на один крок, але цей крок треба подужати, а далі йти буде вже набагато легше.
Історія РНР
Таке додаток, яке називають шлюзом або CGI-програмою, запускається сервером в реальному режимі часу. Сервер передає запити користувача CGI-програмі, яка їх обробляє і повертає результат своєї роботи на екран користувача.
Таким чином, відвідувач отримує динамічну інформацію, яка може змінюватися в результаті впливу різних чинників. Сам шлюз (скрипт CGI) може бути написаний на різних мовах програмування - C / C ++, Fortran, Perl, TCL, Unix Schell, Visual Basic, Apple Script і інших подібних мовах. Але у випадку з РНР, для написання його в первинному варіанті була вибрана мова Perl, як найбільш простий і доступний.
особливості РНР
Як і у будь-якого мови програмування, у РНР є свій синтаксис. Він дуже схожий на синтаксис мови С або Perl. Програмісти, що пишуть на цих мовах, зможуть освоїти РНР буквально за кілька днів. Але навіть якщо Ви ніколи не програмували, РНР піддасться Вам легко і забезпечить базу для переходу на мови більш складного рівня. Всі команди досить логічні, а правила прості. Синтаксис включає в себе оператори, розділені між собою крапкою з комою. Одна з основних помилок початківців програмістів - відсутність крапки з комою між операторами. На щастя, помилки в РНР за замовчуванням видаються на екран (на відміну від CGI, де всі помилки записуються в лог-файл), і знайти їх при певній уважності та досвіді не складе великих труднощів. Тим більше що розумний інтерпретатор підкаже номер рядка, в якій сталася помилка.
Висновок на екран і змінні в РНР
РНР дуже легко дозволяє організувати висновок тексту на екран. Розглянемо приклад скрипта:
Цей скрипт може бути розташований в будь-якому місці HTML-документа, і сам по собі він не несе нічого корисного, так як тільки виводить на екран фразу "Привіт, світ!". Але таким чином ми знайомимося з однією з найбільш поширених команд РНР - висновок інформації на екран користувача. Для того щоб надати нашому скрипту корисні функції, давайте познайомимося з змінними. Мінлива характеризується ім'ям, типом і значенням. Ім'я може бути будь-яким і включати в себе цифри, букви англійського алфавіту і дозволені символи (наприклад, символ підкреслення або тире). За типом змінні діляться на цілі, з плаваючою комою і символьні. Значення відповідно до типу може бути практично будь-яким. Наприклад, змінна a = 5. Це говорить нам про те, що ім'я у змінної - а, тип - цілочисельний, значення - 5. Ось ще приклади імен та значень:
Як бачите, всі змінні в РНР (але не тільки в ньому) повинні починатися з символу $, що дозволяє інтерпретатору безпомилково відрізняти їх від команд РНР. У першому рядку нашого скрипта змінної $ name присвоюється значення 6, та ця змінна автоматично стає целочисленной. До речі кажучи, заздалегідь описувати тип змінної не потрібно, як в мовах Pascal або Visual Basic, але хоча поділ на типи чисто умовне, кожна змінна автоматично прагне використовувати правильний тип, відповідно значенню. Другий рядок коду присвоює змінної $ h12 значення 4.89, яке є значенням з плаваючою комою. Третя і четверта рядки коду присвоюють своїм змінним значення, що є символьними рядками. Все, що укладено в лапки (включаючи цифри), буде інтерпретовано як символьний рядок. Якщо змінні не визначені раніше, але використовуються, їх значення приймається рівним або нулю, або порожній рядку в залежності від типу.
Як і в будь-якій мові, над змінними можна здійснювати будь-які арифметичні дії, і це не вимагає присутності спеціального оператора, досить вказати змінну для результату, знак рівності та перерахувати в природному порядку змінні або значення з необхідними арифметичними знаками. приклад:
Результат роботи скрипта - висновок на екран цифри 4. Підтримуються всі арифметичні операції і функції, багаторівневі дужки, логічні операції, операції збільшення або зменшення на одиницю та багато іншого. Крім того, дуже просто і природно організується порівняння якщо - то - інакше. Для цього в РНР застосовується конструкція if () <> else <>. Є різні варіанти синтаксису цього оператора, але цей - основний, і самий логічний з усіх. (Якщо) if (умова) (то) <выполняется то, что заключено в кавычки> (Інакше) else <выполняется то, что заключено в кавычки>. Після лапок ставити крапку з комою, як зазвичай між операторами, не обов'язково. Але всередині лапок - поділ операторів між собою проводиться тільки через крапку з комою. Допускається вкладення декількох операторів перевірки один в один. В цьому випадку треба бути дуже уважним до кількості закривають лапок, так як при відсутності навіть однієї інтерпретатор видасть помилку коду. Розглянемо нескладний приклад:
При порівнянні на істину застосовується два знака рівності для того, щоб інтерпретатор міг легко відрізнити порівняння від присвоювання. Результат роботи скрипта - 95, т.к $ a не дорівнює $ b, а команда echo $ b. $ A; (Між змінними стоїть крапка, а не знак арифметичної операції) виводить підряд зазначені змінні. Нерівність (неправда) позначається символами! =, Припустимі всі інші арифметичні і логічні символи та оператори (наприклад, or, and,>, <= и т.д.).
У РНР є засоби швидкої зміни змінної на одиницю в сторону збільшення або зменшення. Для цього потрібно вказати ім'я змінної і за ним, без знака рівності, - поспіль два плюса або мінуса відповідно. Наприклад, $ a ++; - змінна $ a буде збільшена на одиницю. Підтримується одночасне присвоювання одного значення декільком змінним - $ a = $ b = 4 ;. Обидві змінних будуть рівні чотирьом. Ось ще кілька прикладів нестандарт арифметичних операцій в РНР:
Вкладення файлів в РНР
Зверніть увагу, написаний нами код враховує ситуацію, коли відвідувач з різних причин вказав неправильний параметр. У цьому випадку виводиться заздалегідь заготовлена сторінка з повідомленням про помилку. Якщо ж параметр відповідає якому-небудь з файлів сайту, він в код файлу index.phtml вкладається і виконується. Таким чином, початок і кінець залишаються однаковими, а змінюється тільки середина. І будь-які зміни вже не здаються такими страшними, як раніше. Адже зробити їх треба тільки в одному файлі, а відіб'ється це на всьому сайті.
Як бачите, ще простіше. Але відразу хочу застерегти Вас, що цей метод хоч і простіше першого, але відкриває шлях до отримання інформації про сервер, де розташований сайт з такою організацією структури. Зловмисник або просто цікава людина при наявності певних обставин і знань зможе багато дізнатися про Ваш сервер, а це відкриває прямий шлях до злому. Так що будьте обережні і не станьте причиною великих неприємностей. Захиститися від подібних проблем можна, але це вже зовсім інша історія.
Приклад лічильника відвідувань на РНР
Якщо Ви все уважно прочитали, Ви без праці отримаєте стартовий капітал знань, і він дасть Вам можливість самостійно надалі вивчати мову РНР. І в кінці я пропоную Вам познайомитися з кодом скрипта, який дозволить організувати на будь-який з сторінок вашого сайту лічильник відвідувань. Цей лічильник не буде повнофункціональним, так як має досить багато недоліків, але як приклад застосування РНР цілком годиться. У будь-якому місці Вашої сторінки (але тільки там, де це потрібно) вставте наступний код:
Алгоритм цього скрипта дуже простий. У першому рядку ми присвоюємо обраної змінної ім'я файлу, де буде зберігатися число відвідувань. У другій - відкриваємо з'єднання з цим файлом для читання. Далі перевіряємо успішність з'єднання, і якщо файл існує і він доступний для читання, зчитуємо з нього рядок з 10 байт, чого цілком достатньо для лічильника, і закриваємо з'єднання з файлом. Збільшуємо показання лічильника на одиницю і виводимо його нове значення на екран. На наступному етапі нам потрібно записати нове значення лічильника, і для цього ми знову відкриваємо з'єднання (дескриптор) з файлом, але вже на запис з очищенням вмісту файлу. Якщо воно успішно - записуємо туди нове значення лічильника і закриваємо дескриптор файлу. От і все.