Ha tudni szeretnénk, hogy működik a PHP, először is célszerű megismerni a web működését. Ha ezt az olvasó már mélyre hatóan ismeri, nyugodtan lapozza át a következő bekezdéseket.
Egy webszerver munkája annyiból áll, hogy file-okat tárol a wincsijén, és ha valamelyiket kérik, akkor odaadja. Amikor például beírjuk a böngészőnkbe, hogy http://www.szerver.hu/iratok/idei/jelentes.html, akkor válaszul a böngészőnk fölkeresi a szerver.hu nevű számítógépet, és közli vele a címet, amit mutattam. A szerver elolvassa a címet és ránéz a wincsire. Az iratok könyvtár idei alkönyvtárában kell megkeresni a jelentes.html nevű file-t. Megkeresi és elküldi. A böngésző átveszi és feldolgozza. Azt már neki, a böngészőnknek kell tudnia, hogy hogyan kell feldolgozni egy HTML file-t. A szervernek ehhez semmi köze. A szerver csak tárolja és kívánságra kiszolgáltatja a file-okat, legyenek azok weboldalak, képek, zenék, szövegek, különböző géptípusokra írt programok, vagy éppenséggel egy file színtiszta értelmetlenséggel megtöltve, a szervernek mindegy. Ha kérik, odaadja.
De vannak szerverek, amik ennél többre is képesek. Ezek bizonyos file-okat nem csupán átadnak, hanem előzőleg csinálnak velük valamit. Például lehetnek olyan szövegek, amiknek a neve .php-re végződik. Egyes szerverek odafigyelnek az ilyen file-okra, és ha ezeket kérik tőlük, akkor másképpen viselkednek. Ahelyett, hogy elküldenék a file-t a böngészőnek, végigolvassák azt. Az ilyen szerver az egyik kezébe veszi a kért .php-re végződő nevű file-t, a másik kezébe egy üres file-t, és munkához lát. Munkájának lényege, hogy a végén a .php file-t majd megint becsukja, és a másik kezében levő file-t küldi el a böngészőnek. A PHP file jellemzően tartalmaz két jelzést: a <?php és ?> jelsorozatokat. Ami nincs ilyenek közé téve, azt a szerver változtatás nélkül átmásolja a másik file-ba. Ami viszont ilyenek között van, az PHP nyelvű programnak számít, és nem másolni kell, hanem végrehajtani.
Nézzünk egy-két példát. Ha én ide, ebbe a cikkbe beírom, hogy
<?php echo rand(1, 100); ?>
akkor az olvasó egy véletlenszerű számot fog látni 1 és 100 között:
89
Ezen persze így nem látszik, hogy véletlenszerű, az sem, hogy PHP állítja elő, és nem én írtam oda kézzel. Viszont valahányszor az olvasó letölti ezt a cikket, a szám mindig más lesz. Éppen az a dolog lényege, hogy a végeredményen nem látszik, hogy mit csinált PHP program és mit nem.
Az echo egy utasítás: arra utasítja a szervert, hogy írjon bele valamit abba a file-ba, amit majd elküldünk a böngészőnek. (Történelmi okokra megy vissza, hogy miért éppen „echo”, azaz visszhang a neve.) Az echo szó után áll a valami, amit a file-ba kell írni. Jelen esetben rand(1, 100); a pontosvessző azt jelenti, hogy vége az echo utasításnak. A rand egy függvény, a random, azaz véletlen szó rövidítése, és az a dolga, hogy adjon egy véletlenszerű számot, ami legalább akkora, mint a zárójelben levő első szám, és legfeljebb akkora, mint a zárójelben levő második szám.
Mire lehet ez jó? Például játékprogramokhoz. Kiírhatunk öt véletlenszámot egymás után, 1 és 90 között, és lottó lesz belőle:
for($a=1; $a<=5; $a++) echo rand(1, 90);
8451222354
Persze ez így csúnya. Tegyünk közéjük egy-egy szóközt.
for($a=1; $a<=5; $a++) echo rand(1, 90).' ';
43 67 68 52 42
Így már nem folynak össze, csak nincsenek sorba rakva. Megtehetjük, hogy sorba is rendeztetjük őket, csak az kicsit nagyobb munka:
for($a=1; $a<=5; $a++) $lista[]=rand(1, 90).' '; sort($lista, SORT_NUMERIC); foreach($lista as $szam) echo $szam.' ';
19 21 44 64 82
A for feladata az, hogy többször (jelen esetben ötször) megismételtessen egy műveletet. A $lista egy tömb, ami a számainkat tárolja; ha egyből kiíratjuk őket, akkor már nem tudjuk sorba rakni, tehát először tárolni kell, aztán sorba rakni, és csak legvégül kiírni. A sort végzi el a rendezést, ami nagyon fontos művelet, de a programozók évtizedeken át kénytelenek voltak saját maguk megírni rá a programot. A foreach végigmegy $lista elemein és egyenként beteszi őket $szamba, amit aztán egy echo kiír.
Persze ez így még nagyon nyers, csiszolatlan valami, például arra sem ügyeltünk, hogy az öt szám között ne legyenek egyformák. De a programozó munkája éppen abban áll, hogy először van egy nyers, csiszolatlan valamije, amit addig bővít, alakít, formál, amíg szép, jól használható, sokat tudó programja lesz.