-
Notifications
You must be signed in to change notification settings - Fork 16
Expand file tree
/
Copy pathtutorial.xml
More file actions
494 lines (478 loc) · 27.4 KB
/
tutorial.xml
File metadata and controls
494 lines (478 loc) · 27.4 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: 1fd637525fd3bbaec04f6fff80eeb33fce880b10 Maintainer: mproshchuk Status: ready -->
<chapter xml:id="tutorial" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<info><title>Простий підручник</title></info>
<para>
В цьому короткому та простому підручнику ми б хотіли показати самі основи
PHP. В даному матеріалі описується лише створення динамічних сторінок з PHP,
хоча PHP придатна не тільки для створення вебсторінок. Прогляньте розділ з
назвою <link linkend="intro-whatcando">Що може PHP</link> для докладної
інформації.
</para>
<para>
Вебсторінки, створені за допомогою PHP, обробляються як звичайні сторінки
HTML. Створювати та редагувати їх можна так, як і звичайні сторінки HTML.
</para>
<section xml:id="tutorial.requirements">
<info><title>Що мені потрібно?</title></info>
<para>
Ми припускаємо, що на вашому вебсервері активовано підтримку PHP, а всі
файли із закінченням <filename class="extension">.php</filename>
обробляються через PHP. На більшості серверів це так і працює, але краще
уточнити це у вашого вебадміністратора. Якщо ваш сервер підтримує PHP, то ви
маєте все необхідне. Просто створюйте файли із закінченням <filename
class="extension">.php</filename>, кладіть їх у вебтеку, а сервер
оброблятиме їх автоматично. Немає потреби будь-що компілювати чи
встановлювати додаткові інструменти. Вважайте файли PHP простими файлами
HTML з набором нових магічних тегів, що дозволяють вам робити купу різних
речей.
</para>
<para>
Мабуть ви захочете заощадити дорогоцінну пропускну здатність та вести
розробку в себе на домашньому комп'ютері. В цьому випадку, вам потрібно
встановити вебсервер на кшталт
<link xlink:href="&url.apache;">Apache</link> та, звичайно ж,
<link xlink:href="&url.php.downloads;">PHP</link>. Скоріш за все, ви також
захочете встановити базу даних, наприклад
<link xlink:href="&url.mysql.docs;">MySQL</link>.
</para>
<para>
Ви можете встановлювати їх всіх окремо або ж обрати простіший варіант. Наш
посібник має <link linkend="install">інструкції встановлення для PHP</link>
(припускаючи, що ви вже маєте робочий вебсервер). Якщо ви маєте проблеми з
встановленням PHP, ми пропонуємо поставити ваші запитання через
<link xlink:href="&url.php.mailing-lists;">список розсилки стосовно
інсталяції</link>. Якщо ж ви вирішете обрати більш простіший спосіб, можете
<link xlink:href="&url.installkits;">знайти готовий пакет</link> для вашої
операційної системи, що автоматично встановлює все вищезазначене кількома
кліками миші. Встановлювати вебсервер з підтримкою PHP досить просто на
будь-якій Операційній Системі, включаючи MacOSX, Linux та Windows. На Linux
вам, можливо, згодяться <link xlink:href="&url.rpmfind;">rpmfind</link>
та <link xlink:href="&url.rpmfind.pbone;">PBone</link> для пошуку
RPMs-пакетів. Можна також використовувати
<link xlink:href="&url.apt-get;">apt-get</link> для пошуку пакетів в Debian.
</para>
</section>
<section xml:id="tutorial.firstpage">
<info><title>Перша сторінка на PHP</title></info>
<para>
Створіть файл з назвою <filename>hello.php</filename> в кореневій теці
вашого вебсервера (<varname>DOCUMENT_ROOT</varname>) та додайте в нього
такий вміст:
</para>
<para>
<example>
<info>
<title>Перший скрипт на PHP: <filename>hello.php</filename></title>
</info>
<programlisting role="php">
<![CDATA[
<?php
echo "Привіт, світ!";
?>
]]>
</programlisting>
<simpara>
Для доступу до файлу використайте ваш браузер, у якому перейдіть за
адресою, що складається з URL вашого вебсервера і закінчення
<literal>/hello.php</literal>. Під час локальної розробки цей URL
виглядатиме приблизно так: <literal>http://localhost/hello.php</literal>
або <literal>http://127.0.0.1/hello.php</literal>, проте це залежить від
налаштування вебсервера. Якщо все працює добре, то цей файл буде оброблено
інтерпретатором PHP, а ви побачите у браузері "Hello World".
</simpara>
<simpara>
Код PHP можна вбудувати в звичайну HTML-сторінку. Це означає, що всередині
HTML-документа ви можете писати інструкції PHP, як в наступному прикладі:
</simpara>
<programlisting role="php">
<![CDATA[
<!DOCTYPE html>
<html>
<head>
<title>Тестуємо PHP</title>
</head>
<body>
<?php echo '<p>Привіт, Світ</p>'; ?>
</body>
</html>
]]>
</programlisting>
<simpara>
Це матиме наступний вивід:
</simpara>
<screen role="html">
<![CDATA[
<!DOCTYPE html>
<html>
<head>
<title>Тестуємо PHP</title>
</head>
<body>
<p>Привіт, Світ</p>
</body>
</html>
]]>
</screen>
</example>
</para>
<para>
Цей код надзвичайно простий, а тому вам навіть не потрібно використовувати
PHP, щоб створити таку сторінку. Все що робить PHP - це виводить:
<literal>Привіт, Світ</literal> через вираз <function>echo</function>.
Зауважте, що файл <emphasis>не зобов'язаний бути виконавчим</emphasis>
або ще якось відрізнятись. Сервер визначив, що цей файл повинен оброблятись
через PHP, оскільки він має закінчення ".php", про яке в налаштуваннях
вебсервера сказано, що його повинен обробляти саме PHP. Сприймайте його як
нормальний файл HTML, що має набір спеціальних тегів, завдяки яким можна
робити купу цікавих речей.
</para>
<para>
Якщо цей приклад нічого не виводить, чи видається вікно для завантаження,
або ж весь файл показується в текстовому вигляді, швидше за все, що на
вашому сервері не активовано підтримку PHP, або його конфігурація не
правильна. Попросіть адміністратора підключити PHP, використовуючи розділ
<link linkend="install">Встановлення</link> даного посібника. Якщо ж ви
розробляєте скрипти PHP вдома (локально), вам також рекомендується
прочитати цей розділ, щоб пересвідчитись, що ви все налаштували правильно.
Переконайтесь також, що ви запитуєте доступ до файлу через протокол http.
Тобто, коли ви просто відкриєте файл через файлову систему, він не буде
оброблятись PHP. Якщо проблеми все ж залишаються, не соромтесь попросити
допомоги вибравши один з
<link xlink:href="&url.php.support;">багатьох доступних способів</link>.
</para>
<para>
Мета прикладу — показати формат спеціальних тегів PHP. Тут ми використали
<literal><?php</literal> у ролі початкового тегу. Далі записано команди
PHP, а для завершення PHP-режиму ми додали кінцевий тег
<literal>?></literal>. Таким чином, ви можете в будь-якому місці входити
і виходити з PHP-режиму всередині файлу HTML. Докладніше про це читайте в
розділі <link linkend="language.basic-syntax">Основний синтаксис PHP</link>.
</para>
<note>
<info><title>Про символ нового рядка</title></info>
<para>
Початок нового рядка в HTML має мало значення, та все ж, краще писати більш
чистий та придатний для читання код HTML завдяки символу нового рядка. PHP
буде видаляти символ нового рядка, що є одразу після закриваючого тегу
<literal>?></literal>. Це може бути надзвичайно корисним, коли ви
вкладаєте багато блоків PHP чи підключаєте файли, що містять код PHP, який
нічого не виводить. В той же час, це інколи буває трохи заплутаним. Ви
можете додавати пробіли після тегу <literal>?></literal>, щоб виводився
символ нового рядка після них, або можете явно виводити виводити символ
нового рядка всередині блока PHP через виклик echo чи print в останній
команді.
</para>
</note>
<note>
<info><title>Про текстові редактори</title></info>
<para>
Є багато текстових редакторів та Інтегрованих Середовищ Розробки
(англ. - IDE), які можна використовувати для створення, редагування та
упорядкування файлів PHP. Прогляньте
<link xlink:href="&url.phpeditorlist;">Список деяких редакторів PHP</link>.
Якщо ви хочете порекомендувати редактор, будь ласка, відвідайте дану
сторінку та попросіть додати редактор до списку. Корисно мати редактор з
підсвічуванням синтаксису.
</para>
</note>
<note>
<info><title>Про текстові процесори</title></info>
<para>
Текстові процесори, такі як StarOffice Writer, Microsoft Word та Abiword
не є оптимальними редакторами для файлів PHP. Якщо все ж вирішите
використовувати один з них для тестових скриптів, то переконайтесь,
що ви зберігаєте файл як <emphasis>простий текст</emphasis> (plain text),
бо інакше PHP не зможе прочитати та виконати цей скрипт.
</para>
</note>
<para>
Тепер, коли ви створили робочий PHP скрипт, прийшов час для створення
найпопулярнішого PHP скрипта! Зробіть виклик функції
<function>phpinfo</function> і ви побачите багато корисної інформації про
вашу систему та налаштування, такі як доступні
<link linkend="language.variables.predefined">попередньо визначені
змінні</link>, увімкнені PHP модулі, а також параметри
<link linkend="configuration">конфігурації</link>. Приділіть деякий час,
щоб проглянути цю важливу інформацію.
</para>
<para>
<example>
<info><title>Отримання системної інформації від PHP</title></info>
<programlisting role="php">
<![CDATA[
<?php phpinfo(); ?>
]]>
</programlisting>
</example>
</para>
</section>
<section xml:id="tutorial.useful">
<info><title>Дещо корисне</title></info>
<para>
А тепер зробімо щось корисне. Ми збираємось перевірити, який саме браузер
використовує відвідувач. Для цього ми перевіримо рядок, який відправляє
браузер як частину HTTP запиту. Ця інформація зберігається в
<link linkend="language.variables">змінній</link>. В PHP змінні завжди
починаються зі знака долара. Зараз нам цікава змінна
<varname>$_SERVER['HTTP_USER_AGENT']</varname>.
</para>
<note>
<para>
<varname>$_SERVER</varname> - це спеціальна зарезервована змінна PHP, що
містить всю інформацію отриману від вебсервера. Її також називають
суперглобальною. Докладніша інформація є на сторінці
<link linkend="language.variables.superglobals">Суперглобальні змінні</link>.
</para>
</note>
<para>
Давайте подивимось на значення цієї змінної:
</para>
<para>
<example>
<info><title>Друк змінної (елемент масива)</title></info>
<programlisting role="php">
<![CDATA[
<?php
echo $_SERVER['HTTP_USER_AGENT'];
?>
]]>
</programlisting>
<para>
Скрипт надрукує приблизно таке:
</para>
<screen role="html">
<![CDATA[
Mozilla/5.0 (Linux) Firefox/112.0
]]>
</screen>
</example>
</para>
<para>
В PHP існує багато <link linkend="language.types">типів</link> змінних. В
попередньому прикладі ми друкували елемент зі
змінної-<link linkend="language.types.array">масиву</link>. Масиви можуть
бути дуже корисними.
</para>
<para>
<varname>$_SERVER</varname> є однією зі змінних, яку PHP автоматично
створює для вас. Довший список таких змінних можна проглянути в розділі
<link linkend="reserved.variables">Зарезервовані змінні</link>, або ж ви
можете роздрукувати весь їхній список, викликавши функцію
<function>phpinfo</function>, яку ми вже використовували в попередньому
абзаці.
</para>
<para>
Можна вкладати декілька рядків коду всередині тегів PHP та створювати
невеликі блоки коду, що можуть робити більше, ніж простий виклик echo.
Наприклад, якщо ви хочете створити перевірку для Firefox, це можна зробити
так:
</para>
<para>
<example>
<info><title>Використання <link linkend="language.control-structures">
структур контролю</link> та
<link linkend="language.functions">функцій</link>
</title>
</info>
<programlisting role="php">
<![CDATA[
<?php
if (str_contains($_SERVER['HTTP_USER_AGENT'], 'Firefox')) {
echo 'Ви використовуєте Firefox.';
}
?>
]]>
</programlisting>
<para>
Результат цього скрипта може бути таким:
</para>
<screen role="html">
<![CDATA[
Ви використовуєте Firefox.
]]>
</screen>
</example>
</para>
<para>
Тут використовується кілька нових понять. По-перше, це вираз
<link linkend="control-structures.if">if</link>.
Якщо ви знайомі з базовим синтаксисом, що використовується в мові C, то цей
вираз буде для вас теж знайомим. В іншому випадку, вам ймовірно слід
підібрати підручник з PHP для початківців та прочитати перші кілька
розділів, або прочитати главу <link linkend="langref">Довідник з PHP</link>
даного посібника.
</para>
<para>
Друге поняття, яке ми ввели - це виклик функції
<function>str_contains</function>. Функція <function>str_contains</function>
вбудована в PHP, вона визначає наявність одного рядка всередині іншого. У
даному випадку ми шукаємо підрядок <literal>'Firefox'</literal> (т. зв.
needle, "голку") всередині значення змінної
<varname>$_SERVER['HTTP_USER_AGENT']</varname> (у т. зв. haystack, "копиці
сіна"). І якщо підрядок буде знайдено, то функція поверне true. Якщо ні —
&false;. Якщо ж вона повертає &true;, вираз
<link linkend="control-structures.if">if</link> буде оцінено як &true;
(істина) та виконається код всередині {фігурних дужок}. А інакше код
запускатись не буде. Спробуйте створити аналогічні приклади, використовуючи
<link linkend="control-structures.if">if</link>,
<link linkend="control-structures.else">else</link>, та інші функції такі
як <function>strtoupper</function> та <function>strlen</function>. В даному
посібнику є ще багато прикладів, майже для кожної функції. Якщо ви не
впевнені як використовувати функції, то можна прочитати
<link linkend="about.prototypes">як читати визначення функцій</link> та
розділ про <link linkend="language.functions">функції PHP</link>.
</para>
<para>
Ми можемо піти ще далі та показати як можна входити і виходити з режиму PHP
навіть всередині виразу PHP:
</para>
<para>
<example>
<info><title>Змішаний код HTML та PHP</title></info>
<programlisting role="php">
<![CDATA[
<?php
if (str_contains($_SERVER['HTTP_USER_AGENT'], 'Firefox')) {
?>
<h3>str_contains() повернула true</h3>
<p>Ви використовуєте Firefox</p>
<?php
} else {
?>
<h3>str_contains() повернула false</h3>
<p>Ви не використовуєте Firefox</p>
<?php
}
?>
]]>
</programlisting>
<para>
Приклад виводу скрипта:
</para>
<screen role="html">
<![CDATA[
<h3>str_contains() повернула true</h3>
<p>Ви використовуєте Firefox</p>
]]>
</screen>
</example>
</para>
<para>
Замість того, щоб використовувати в PHP вираз echo для виведення чогось, ми
вийшли з режиму PHP та безпосередньо відправляємо код HTML. Тут дуже важливо
відзначити, що таким чином не змінюється логічна структура скрипта. У
підсумку лише один з блоків HTML буде відправлено в браузер, в залежності
від результату, поверненого функцією <function>str_contains</function>.
Іншими словами, це залежить від того, чи буде знайдено рядок
<literal>Firefox</literal>.
</para>
</section>
<section xml:id="tutorial.forms">
<info><title>Робота з формами</title></info>
<para>
Одна з найпотужніших особливостей PHP - це її спосіб обробки HTML-форм.
Важливо знати, що будь-який елемент форми автоматично стає доступним для
скрипта PHP. Докладну інформацію та приклади використання форм в PHP можна
прочитати в розділі <link linkend="language.variables.external">Змінні,
отримані зі зовнішніх джерел</link>. Тут ми продемонструємо приклади
HTML-форм:
</para>
<para>
<example>
<info><title>Проста HTML-форма</title></info>
<programlisting role="html">
<![CDATA[
<form action="action.php" method="post">
<label for="name">Ваше ім'я:</label>
<input name="name" id="name" type="text">
<label for="age">Ваш вік:</label>
<input name="age" id="age" type="number">
<button type="submit">Надіслати</button>
</form>
]]>
</programlisting>
</example>
</para>
<para>
В цій формі немає нічого особливого. Це звичайна HTML-форма без будь-яких
спеціальних тегів. Коли користувач заповнить цю форму і натисне кнопку
відправлення, буде викликано сторінку <filename>action.php</filename>.
В цьому файлі можна написати щось таке:
</para>
<para>
<example>
<info><title>Друк даних з нашої форми</title></info>
<programlisting role="php">
<![CDATA[
Привіт, <?php echo htmlspecialchars($_POST['name']); ?>.
Вам <?php echo (int) $_POST['age']; ?> років.
]]>
</programlisting>
<para>
Зразок виводу цього скрипта:
</para>
<screen role="html">
<![CDATA[
Привіт, Костя. Вам 34 роки.
]]>
</screen>
</example>
</para>
<para>
Записи в цьому скрипті, окрім <function>htmlspecialchars</function> та
<literal>(int)</literal>, мають бути зрозумілими. Функція
<function>htmlspecialchars</function> гарантує, що будь-який введений
символ, який є спеціальним в HTML, правильно кодується, щоб ніхто не зміг
ввести теги HTML чи Javascript на вашій сторінці. Оскільки ми знаємо, що
поле "age" має бути числовим, ми просто
<link linkend="language.types.typecasting">конвертуємо</link> його значення
в <type>int</type>, і таким чином позбуваємось від будь-яких сторонніх
символів. PHP може це робити автоматично, якщо встановити розширення
<link linkend="ref.filter">filter</link>. Змінні
<varname>$_POST['name']</varname> та <varname>$_POST['age']</varname>
автоматично ініціалізує PHP. Раніше ми використовували суперглобальну
змінну <varname>$_SERVER</varname>; вище ми ввели просто ще одну
суперглобальну змінну <varname>$_POST</varname>, котра містить всі
відправлені POST-дані. Зауважте, що <emphasis>method</emphasis> нашої форми
вказано як POST. Якщо ми використовуємо метод <emphasis>GET</emphasis>, то
дані форми будуть знаходитись в іншій суперглобальній змінній — в
<varname>$_GET</varname>. Ще можна використовувати суперглобальну змінну
<varname>$_REQUEST</varname>, якщо ви не впевнені, яким методом відправлено
вам дані. Ця змінна містить об'єднані дані від методів GET, POST та COOKIE.
</para>
</section>
<section xml:id="tutorial.whatsnext">
<info><title>Що далі?</title></info>
<para>
Тепер ви отримали знання, які допоможуть вам зрозуміти більшу частину
матеріалу даного посібника, а також деякі приклади скриптів, що доступні в
архіві прикладів.
</para>
<para>
Якщо ви хочете проглянути деякі презентації і слайди, що показують більше
можливостей PHP, то можете проглянути матеріали PHP конференції:
<link xlink:href="&url.php.talks;">&url.php.talks;</link>
</para>
</section>
</chapter>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->