A PHP (PHP Hypertext Prepocessor) nyelv segítségével szerveroldali szkripteket írhatunk. A szkriptek a HTML dokumentumokba ágyazhatók be, és az oldal letöltése előtt a webszerver PHP modulja futtatja őket. A szkriptek által generált kimenet behelyettesítődik a HTML megfelelő pontjára, így kliens oldalon már csak egy "statikus" HTML lapot látunk. KonfigurációAhhoz, hogy oldalaink PHP részei lefussanak, engedélyeznünk kell a szerveren a PHP kód futtatását. Az apache alatt valahogy így néz ki a beállítás:/usr/local/apache/conf/httpd.conf:
PHP beágyazása HTML-beA fájl kiterjesztése".php" , hogy a webszerver észrevegye, futtatni kell a PHP értelmezőt. A HTML kódban tetszőleges számú PHP blokk lehet. A blokkokat <?php és ?> közé kell zárni.A PHP blokk parancsait a PHP értelmező végrehajtja, és a parancsok által "kiírt" szövegeket behelyettesíti a HTML kódba, a PHP blokk helyére. Ebből ...<h1>Ez még html...</h1> <?php echo "Ez már PHP..."; ?> ... ez lesz<h1>Ez még html...</h1> Ez már PHP... VáltozókA PHP változókat dollár-jellel vezetjük be. Nem kell előzetes deklaráció, nem kell típust megadni, az a használat módjából derül ki.A változók tárolhatnak számokat, szövegeket és tömböket. Számok<?php $a = 1; $b = 2; $c = $a + $b; echo $c; //egész $d = 10; $e = 3; $f = $d/$e; printf("%.3f",$f); //lebegőpontos, formázva ?> Szövegek<?php $a = "alma"; $b = "fa"; $c = $a.$b; echo $c; //almafa
Tömbök<?php $a[1] = 1; $a[2] = 2; $a[3] = 42; print_r($a); //tömb kiírása $b['Aladár'] = 10; $b['Béla'] = 15; $b['Csilla'] = 24; print_r($b); //asszociatív tömb $c = array( 'Aladár'=>10, 'Béla'=>15, 'Csilla'=>24); //így is lehet ?> CiklusokSzámlálós ciklus<?php for($i=0; $i<=20; $i++){ echo $i; } // 0, 1, 2, ..., 20 ?> Elöltesztelős ciklus
Tömb-bejáró ciklus<?php $primek = array(2,3,5,7,11,13,17,19); foreach($primek as $p){ echo $p; } // 2, 3, 5, ..., 19 ?> Elágazások<?php $a = 10; $b = 20; if($a > $b){ echo "Az 'a' a nagyobb."; } else { echo "Az 'a' nem a nagyobb."; } ?> GET paraméterekA HTTP protokoll kétféle metódust definiál arra, hogyan tudunk paramétereket átadni egy szerveroldali szkriptnek. A GET metódus esetén a paraméterek az URL-be kódolva kerülnek átadásra. http://szerver.com/mappa/server.php?a=3&b=4 Ezeket a paramétereket a PHP kódban így vehetjük át: <?php $a = $_GET["a"]; $b = $_GET["b"]; $c = $a*$b; echo "A szorzat: ".$c; ?> MYSQL hívások PHP alattA PHP program képes MYSQL adatbázis szerverhez kapcsolódni. A kapcsolódás után SQL lekérdezések futtathatók, a kapott válaszok a programban felhasználhatók, az adatok alapján dinamikusan állíthatók össze HTML tartalmak. Az alábbi kód séma egy MYSQL tábla kiírását mutatja be: <?php mysql_connect("szerver","felhasználó","jelszó"); mysql_select_db("adatbázis"); $sql = "SELECT * FROM tábla"; $válasz = mysql_query($sql); while($sor = mysql_fetch_assoc($válasz)){ print_r($sor); } mysql_close(); ?> Mint látható, a fenti kódrészlet érzékeny információkat is tartalmaz. Célszerű a szerveren jól beállítani a hozzáférési jogosultságokat, ha el szeretnénk kerülni, hogy adatbázis jelszavunk rossz kezekbe kerüljön. További óvatosság, hogy az azonosítót és a jelszót tárolhatjuk külön állományban, ahonnan a php kód beolvassa. Így elkerülhető, hogy a php modul esetleges hibája esetén letöltődő php forráskódunkban szerepeljen kritikus információ. "Twitter"Összes hozzászólás kiírása <p> <?php mysql_connect("szerver","felhasználó","jelszo"); mysql_select_db("adatbázis"); mysql_query("SET NAMES 'utf8'"); $sql = "SELECT * FROM posts"; $v = mysql_query($sql); while($sor = mysql_fetch_assoc($v)){ echo "<p>"; print_r($sor); echo "</p>"; } mysql_close(); ?> </p> Adott felhasználó által követettek hozzászólásai <p> <?php $id = $_GET['id']; mysql_connect("szerver","felhasználó","jelszo"); mysql_select_db("adatbázis"); mysql_query("SET NAMES 'utf8'"); $sql = "SELECT users.nev, datum, txt "; $sql .= "FROM users, followers, posts "; $sql .= "WHERE users.id = followers.uid1 AND "; $sql .= "followers.uid2 = posts.uid AND "; $sql .= "users.id = ".$id; $v = mysql_query($sql); while($sor = mysql_fetch_assoc($v)){ echo "<p>"; print_r($sor); echo "</p>"; } mysql_close(); ?> </p> Adott felhasználó által követettek hozzászólásai, CSS formázással, felhasználó nevével <html> <head> <title>Twitter</title> <meta http-equiv="content-type" content="text/html;charset=utf-8" /> <style type="text/css"> div.poszt { padding: 10px; margin: 30px; width: 200px; border-style: solid; border-width: 1px;} </style> </head> <body> <h1> Hozzászólások</h1> <p> <?php $id = $_GET['id']; mysql_connect("szerver","felhasználó","jelszó"); mysql_select_db("adatbázis"); mysql_query("SET NAMES 'utf8'"); $sql = "SELECT nev from users WHERE id = ".$id; $v = mysql_query($sql); $sor = mysql_fetch_assoc($v); $nev = $sor['nev']; echo "<h3>".$nev."</h3>"; $sql = "SELECT users.nev, datum, txt "; $sql .= "FROM users, followers, posts "; $sql .= "WHERE users.id = followers.uid2 AND "; $sql .= "followers.uid2 = posts.uid AND "; $sql .= "followers.uid1 = ".$id; $v = mysql_query($sql); while($sor = mysql_fetch_assoc($v)){ echo "<div class='poszt'>"; echo "<h4>".$sor['nev']."</h4>"; echo "<p>".$sor['txt']."</p>"; echo "<p>".$sor['datum']."</p>"; echo "</div>"; } mysql_close(); ?> </body> </html> |
Hálózatok >