A PHP (PHP Hypertext Prepocessor) nyelv
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:
# Make sure there's only **1** line for each of these 2 directives:
# Use for PHP 4.x:
#LoadModule php4_module modules/libphp4.so
#AddHandler php-script .php
# Use for PHP 5.x:
LoadModule php5_module modules/libphp5.so
AddHandler php5-script .php
# Add index.php to your DirectoryIndex line:
DirectoryIndex index.html index.php
AddType text/html .php
# PHP Syntax Coloring
# (optional but useful for reading PHP source for debugging):
AddType application/x-httpd-php-source phps
PHP beágyazása HTML-be
A 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ók
A 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?> Ciklusok
Számlálós ciklus
<?php for($i=0; $i<=20; $i++){ echo $i; } // 0, 1, 2, ..., 20?> Elöltesztelős ciklus
<?php $i = 1;
while($i<1000){
echo $i;
$i *= 2;
} // 1, 2, 4, 8, ..., 512
?> 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éterek
A 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<?php $a = $_GET["a"]; $b = $_GET["b"]; $c = $a*$b; echo "A szorzat: ".$c;?>MYSQL hívások PHP alatt
A
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><?phpmysql_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>
Nincsenek megjegyzések:
Megjegyzés küldése