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>
<?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>
Nincsenek megjegyzések:
Megjegyzés küldése