PHP + XML alapú vendégkönyv
A következő segédletben a már előzőleg bemutatott PHP + TXT alapú vendégkönyv -et írom át XML alapúra. Ehhez a php-nek a simpleXML osztályát fogom használni. Ebben a segédletben is, ugyan úgy, mint a PHP + MYSQL alapú vendégkönyv -ben elég lesz csak a config.php és a functions.php fájl módosítása.
Az adatok tárolására most XML-t fogunk használni. A fájl formátuma:
<posts>
<post>
<name>Nev</name>
<email>Email</email>
<date>Datum</date>
<message>Uzenet</message>
</post>
<post>
<name>Nev</name>
<email>Email</email>
<date>Datum</date>
<message>Uzenet</message>
</post>
...
</posts>
Készíts egy új üres xml dokumentumot, legyen a neve gb.xml
<posts>
</posts>
Ezt mindenképp írd bele, enélkül nem fog működni. Ha szükséges, adj a fájlnak írási jogokat (chmod). Ezután jöjjön a config.php
$per_page = 5; //Uzenetek egy oldalon
$handler = "gb.xml"; //Tarolo file
Ha ez is megvan, nincs más hátra, mint átírni a functions.php -t.
function print_post($body)
{
//smileyk
$body = preg_replace("/\[sm(\d+)\]/","<img src='sm$1.gif' alt='smiley'/>",$body);
//[b] bbcode
$body = preg_replace("/\[b\](.*)\[\/b\]/","<strong>$1</strong>",$body);
return $body;
}
function add_post($name,$email,$message,$handler)
{
//Biztonsagi teendok
$name = str_replace("\n","<br />",htmlspecialchars($name));
$email = str_replace("\n","<br />",htmlspecialchars($email));
$message = str_replace("\n","<br />",htmlspecialchars($message));
$date = date("Y-m-d H:i:s");
$xml = simplexml_load_file($handler);
$new_post = $xml->addChild('post');
$new_post->addChild('name',utf8_encode($name));
$new_post->addChild('email',utf8_encode($email));
$new_post->addChild('message',utf8_encode($message));
$new_post->addChild('date',$date);
$xml->asXML($handler);
}
function get_message_num($handler)
{
$xml = simplexml_load_file($handler);
return $xml->count();
}
function get_current_dataset($curr_page,$per_page,$handler)
{
$return = array();
$xml = simplexml_load_file($handler);
foreach($xml->post as $p)
{
$data = array(utf8_decode($p->name),
utf8_decode($p->email),
utf8_decode($p->date),
utf8_decode($p->message));
$return[] = $data;
}
$return = array_reverse($return);
$return = array_slice($return,($curr_page-1)*$per_page,$per_page);
return $return;
}
A függvények, valamint a paramétereik maradtak ugyan azok. A különbség annyi, hogy a simpleXML osztályt felhasználva xml fájlban tárolódnak az adatok. Mivel az osztály UTF-8 kódolást használ alapból, ezért kódolni/dekódolni kell, ha mi mást (jelen esetben iso-8859-2) használunk.
Ezzel végére értem a három részes sorozatnak, amiben egy vázra építettünk három különböző adattárolási módú vendégkönyvet. Ennek alapján bárki elkészítheti a saját vendégkönyvét, bármilyen módszert is választ. Sok sikert!
requiem