THESE PAGES ARE FREE OF

JAVA
FRAMES

STORED ON A LINUX SERVER, AND RUNNING SPACEHAWKS' OWN LINUX BASED VOTING AND MESSAGE BOARD CGI.

NO MICROSOFT RELATED PROGRAMS WERE USED TO CREATE THIS SITE.

VOYAGER
IBROWSE
AWEB
 
MSIE
 

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

 

 

 
 
 
GLOBAL LINKS DOWNLOAD AREA MESSAGE BOARD