Kereső
Kategóriák
Hasznos linkek
Hírdetés
Proba

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.

Forrás fájlok egyben

Az adatok tárolására most XML-t fogunk használni. A fájl formátuma:

<?xml version="1.0" encoding="UTF-8"?>
<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

<?xml version="1.0" encoding="UTF-8"?>
<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

<?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.

<?php
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

 

Szólj hozzá

{"error":["Invalid domain (web.segedletek.hu) for this app"]}