L'ho fatto adesso al volo, ma dovrebbe fare al caso tuo. Ovviamente la personalizzazione grafica spetta a te

Codice PHP:
<script language="javascript">
<!--
    function trim(str)
    {
       return str.replace(/^\s*|\s*$/g,"");
    }

    function chkGuest(form)
    {
        if(trim(form.titolo.value) == "" || trim(form.messaggio.value) == "" || trim(form.autore.value) == "")
        {
            alert("È necessario compilare tutti i campi");
            return false;
        }
        else
        {
            return true;
        }
    }
-->
</script>


<?php

// file per lo storage
$guest_file "guestbook.txt";

// numero di messaggi per ogni pagina
$nxpag 5;

// range di apparizione degli indici (fondo pagina)
$nrg 8;

// pagina attuale
$script get_script();

// FUNZIONI

function get_script()
{
    
$s array_pop(explode("/"$_SERVER['REQUEST_URI']));
    if(
strpos($s"?"))
    {
        
$s substr($s0strpos($s"?"));
    }
    return 
$s;
}

function 
read_guest_file($file)
{
    
$rs fopen($file"r");
    
$a file($file);
    
fclose($rs);
    for(
$i=0;$i<count($a);$i++)
    {
        list(
$b[$i]['data'], $b[$i]['titolo'], $b[$i]['messaggio'], $b[$i]['autore'], $b[$i]['id']) = explode("::",$a[$i]);
    }
    return 
$b;
}

function 
add_message($file$data$titolo$messaggio$autore)
{
    
$a file($file);
    
$rs = @fopen($file"w+");
    for(
$i=0;$i<count($a);$i++)
    {
        
$rest .= $a[$i];
    }
    
$cont $data."::".$titolo."::".$messaggio."::".$autore."\n".$rest;
    
fwrite($rs$cont);
    
fclose($rs);
    print(
$cont);
}

// GUESTBOOK

if (!isset($_GET['act'])) 
{
    print(
"<div>");
    
    
$row read_guest_file($guest_file);    
    
$num count($row);
    
    if(!isset(
$_GET['page'])) { $np 1; }
    else { 
$np $_GET['page']; }
        
    print(
"<div>");
    
    if(
$num == 0)
    {
        print(
"<p align='center'>Al momento non ci sono messaggi


</p>"
);
    }
    else
    {
        for(
$i=0;$i<$num;$i++)
        {
            
$min = ($np-1) * $nxpag;
            
$max = ($min $nxpag) - 1;
            
            if(
$i>=$min && $i<=$max)
            {
                print(
"<table width='100%' border='1' cellspacing='0' cellpadding='0' style='margin-bottom:50px;'>");
                    print(
"<tr>");
                        print(
"<td>");
                            print(
stripslashes($row[$i]['titolo']));
                        print(
"</td>");
                        print(
"<td align='right' width='150'>");
                            print(
$row[$i]['data']);
                        print(
"</td>");
                    print(
"</tr>");
                    print(
"<tr>");
                        print(
"<td colspan='2'>");
                            print(
"<div>");
                                print(
stripslashes($row[$i]['messaggio']));
                            print(
"</div>");
                            print(
"<div style='text-align:right;'>");
                                print(
"[b]scritto da: [/b]".$row[$i]['autore']);
                            print(
"</div>");
                        print(
"</td>");
                    print(
"</tr>");
                print(
"</table>");
            }
        }
    }
    
    
$npagine ceil($num/$nxpag);
    
    if(
$np 1) { $prev $np-1; }
    else { 
$prev 1; }
    
    if(
$np $npagine) { $next $np+1; }
    else { 
$next $npagine; }
    
    if(
$num $nxpag)
    {
        print(
"<table align='center'><tr><td valign='middle'>");
        
        if(
$np $nrg)
        {
            print(
"[url='?page=1']<<[/url]");
        }
        print(
"[url='?page=".$prev."']<[/url]");
    
        for(
$i=1;$i<=$npagine;$i++)
        {
            if(
$i < ($np+$nrg) && $i > ($np-$nrg))
            {
                if(
$i == $np)
                {
                    print(
" <font>".$i."</font> ");
                }
                else
                {
                    print(
"[url='?page=".$i."']".$i."[/url] ");
                }
            }
        }
        print(
"[url='?page=".$next."']>[/url]");
        
        if(
$np < ($npagine $nrg))
        {
            print(
"[url='?page=".$npagine."']>>[/url]");
        }
        print(
"</td></tr></table>");
    }
    
?>
    
    




    <div style="border-top:1px solid #BBBBBB;"></div>
    




    <div style="width:450px; text-align:left;">
        <form action="?act=ins" method="post" onSubmit="return chkGuest(this)">
            titolo:

            <input type="text" name="titolo" size="70">


            messaggio:

            <textarea cols="53" rows="5" name="messaggio"></textarea>


            autore:

            <input type="text" name="autore" size="70">


            <input type="submit" value="INSERISCI">
        </form>
    </div>
    
    <?php
    
print("</div>");

else if (
$_GET['act'] == "ins")
{
    
$titolo htmlspecialchars($_POST['titolo']);
    
$messaggio nl2br(htmlspecialchars($_POST['messaggio']));
    
$autore htmlspecialchars($_POST['autore']);
    
$data date("d/m/Y");
    
add_message($guest_file$data$titolo$messaggio$autore);
    print(
"<script> window.location='".$script."'</script>");
}
?>