WORLDNEWS
ISSUE 19
PHP
Úgy
látszik immár hagyományunkká válik a net "mögött" álló dolgok
ismertetésénél, hogy mindig a nehezebbtôl haladunk az egyszerűbb
felé - ha még emlékszünk cgi sorozatunkat a C-ben írt Cgi-vel
kezdtük, majd jött a perl, és most a PHP-t fogjuk sorra venni
- mint majd látni fogjuk messze a legegyszerűbben használhatót
az eddigiek közül.
Persze
a PHP az nem CGI. A PHP egész pontosan szerveroldali, cross-platform,
HTML-be ágyazott scriptnyelv. (Idevágó megjegyzésként a "számítástechnikai"
szótár vért izzadt ezen, és olyanokat adott eredményként, mint
keresztplatform és forgatókönyvíró nyelv, úgyhogy ezért voltam
kénytelen az angol kifejezéseket meghagyni-Emeric SH) A PHP
ingyenes, open source és egyre növekvô számban támogatják a serverek
- magyarán jó esélye van arra az embernek, hogy ott is használhatja
ahol szeretné.
Az,
hogy a PHP nem CGI annyiban jelent különbséget mondjuk a PERL-hez
viszonyítva, hogy ezúttal nem a programunk fogja generálni a HTML
kódot, hanem a programunkat helyezzük el a HTML kódban. Végeredményét
tekintve természetesen nem lesz különbség, sem a PERL sem a PHP
esetén nem látható a programunk a végleges, a felhasználóhoz megérkezô
forrásban.
Sorra
vettünk már néhány általánosan elterjedt felhasználási lehetôséget
eddigi cikkeink folyamán, nem lesz ez másként jelen esetünkben
sem. A PHP-val még annyira sincs gyakorlatom mint a PERL-el, ezért
az esetleges hibák elôfordulása esetén a PHP guruk jóindulatát
kérem, de a programunk remélhetôleg hibátlanul működni fog...
Levélben
fogjuk ugyanis egy form tartalmát elküldeni. Szokás szerint a
http_post method segítségével transzferáljuk majd adatainkat a
formot tartalmazó html és a php kódot tartalmazó html-ünk között.
(Hogy a felhasználó egyrészt ne láthassa amit küldünk, másrészt
pedig hogy ne legyen adataink mérete limitálva az url hossza miatt...
Tolsztojok is betévedhetnek ugye akárkihez.)
Elsô
html-ünkbe akkor illesszük is be formunkat, hogy a dolgok egyszerűbbik
részén hamar túlessünk.
<form
method="post" action="http://aholacgitalalhato/levelkuldo.php3">
Neve: <input type="text" name="nev">
<input type="submit" name="Submit" value="Küldés">
</form>
A
form mezõ action paraméterét természetesen módosítanunk
kell, attól függôen, hogy hova helyezzük el a levelet elküldô
php programunkat. A kiterjesztés fontos, ugyanis a php errôl ismeri
fel, hogy php programmal van dolga és nem szabvány html-lel. (Érdemes
megfigyelni, hogy nem három karakteres a kiterjesztés... Valamiért.)
Innentôl
pedig már következzen a levelkuldo.php3 kódja: figyeljük
meg, pontosan olyan lesz, mintha egy html forrást néznénk, egészen
apró eltérésekkel csupán.
<html>
<head>
</head>
<body>
<?php
$level="Név:\n\n";
if ($nev=="") {
echo "Ön nem adta meg a nevét!";
$error=$error+1;
}
$level=$level.$nev;
if ($error==0) {
mail ("emeric@abakusz.matav.hu", "Ez a subject",
$level, "From: Micimackó\nReply-To: ideggyogyintezet@szazholdas.pagony\nX-Mailer:
szamócabrowser\nX-Priority: 1");
echo "A levél elküldésre került.";
}
?>
</body>
</html>
Igazából
két dolog ragadott meg a PHP-ban. (Amiért szívesebben használom
mostanában.) Az egyik az az elképesztô bonyolultsága (nézzük csak
meg mennyi elôkészület kellett míg egy változót használni tudtunk,
akár C-rôl, akár Perlrôl volt szó (de még a Microsoft ASP esetében
is bonyolultabb!), itt pedig egész egyszerűen csak hivatkozunk
rá, mert már default létezik a változó amit az elôzô html-ünkbôl
megkaptunk. Ha megnézzük a változó neve ugyanaz, mint amit a text
input field "name" paramétereként megadtunk.), a másik pedig az
amit levélküldés címén művelni lehet vele. Gyakorlatilag az elküldött
levél majd minden egyes paraméterét átírhatjuk (meghamisíthatjuk).
Vegyük
sorjára akkor mit is csináltunk. Mint azt láthatjuk maga a programrész
két sor által van közrefogva, ezek jelzik, hogy PHP programrész
található a programban:
<?php
?>
Ami
e között található azt a PHP fordító megpróbálja értelmezni, a
többit pedig változtatás nélkül küldi el a felhasználónak.
Amint
az a program legelsô során nagyszerűen szemléltetve is van, nem
kell a változókat elôzetesen deklarálni, valamint változóhivatkozásaink
elé $ jelet kell raknunk. Még egyvalami kiviláglik ebbôl a sorból:
A C vagy Perl nyelvhez hasonlóan itt is a \n jelenti a sortörést.
$level="Név:\n\n";
Az
if feltételek (sôt, csaknem minden) megtévesztésig C - tehát egy
C tapasztalatokkal rendelkezô egyén nem fog kétségbeesni a PHP
kapcsán. Megvannak persze a maga utasításai is, hogy ezeknek hol
lehet utánanézni azt majd a végén.
if
($nev=="") {
echo "Ön nem adta meg a nevét!";
$error=$error+1;
}
Egy
jó példa: az összefűzés művelet, amelyet a "." karakter jelöl.
$level=$level.$nev;
Végezetül
pedig a levélküldés ami egyszerűen pazar. Semmi fölösleges megnyitás,
rendszerparancs, semmi... Egyetlen utasítás, és benne minden paraméter,
és már el is ment. A többit a PHP fordító intézi... Így kell ezt
csinálni. Ez a maximális elegancia... (Bár itt tördelve
látszik a forrásban természetesen ez egy
sor...)
mail
("emeric@abakusz.matav.hu", "Ez a subject",
$level, "From: Micimackó\nReply-To: ideggyogyintezet@szazholdas.pagony\nX-Mailer:
szamócabrowser\nX-Priority: 1");
Sorban,
vesszôkkel elválasztva megadjuk a cél e-mail címet, a subjectet,
a level tartalmát (jelen esetben ezt elôzôleg beletettük $level
nevű változónkba), és ezután jön a "többi". A "többi" a levél
egyéb paramétereit takarja, sortörésekkel elválasztva (\n).
Hogy
pedig melyek lehetnek ezek a paraméterek annak mindenki utánanézhet
a http://www.php.net címen, ahol
dokumentáció, utasítások listája és leírása is megtalálható -
angol nyelven.
Ismertetônk
talán kicsit rövid volt, dehát ilyen a PHP nyelv - egyszerűen
túl egyszerű és elegáns. Most már tényleg van egy nyelv, amit
mindenkinek tudok ajánlani, aki a C-t túl körülményesnek, a PERL-t
pedig túl érthetetlennek tartotta: a PHP személyes véleményem
szerint a legjobban megalkotott nyelv az erre a feladatra szóbajöhetô
alternatívák között. Reméljük rövidesen minden PERL fordítóval
rendelkezô szerveren lesz PHP preprocessor is. Sok sikert a kisérletezéshez...
Az esetleges tárgyi tévedéseimért pedig elôre is elnézést kérek.
Emeric SH