Upload failed. Maybe wrong permissions?

User Tools

Site Tools






Így működik a PHP

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:
  57
  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);

212284378
  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).' ';

8 85 29 35 49
  Í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 37 49 57 79
  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.
  


Láng Attila D., 2007.3.13.

HTML PHP programozás számtech

Proci, kliens, szerverCsináljunk fasztivált

Hozzászólások

Hozzászólás írása. Wikiszintaxis használható: