Un guestbook con PHP

di Andrea Zani, in Altre tecnologie,
  • 0
  • 0
  • 0
  • 2,41 KB

Il guestbook ormai è uno di quegli accessori onnipresenti nelle home-page e nei siti di piccole dimensioni, che permette ai visitatori di lasciare la propria firma o un messaggio che può essere un complimento, o un modo di entrare in contatto con altri visitatori. In questo articolo vedremo come crearne uno con il PHP, tecnologia che sta prendendo sempre più piede grazie alla sua semplicità e alla "portabilità", che lo rende uno strumento adatto per la progettazione di siti "dinamici" sia su Windows che Linux.

Mettere tutti d'accordo

Quello presente come esempio, e scaricabile con questo articolo, è composto da un unico script PHP che si occuperà di tutto, dalla visualizzazione dei messaggi presenti, al form in cui l'utente potrà lasciare il proprio messaggio.

E' incluso anche un altro file (messaggi.txt) in cui saranno inseriti tutti i messaggi.

Perché ho scelto di utilizzare un normale file di testo e non un più comodo database per la memorizzazione dei vari messaggi? La risposta è da ricercarsi nella vastità di database che il PHP può utilizzare con modalità di accesso diverso l'uno dall'altro. Se avessi scritto del codice per l'accesso ad database MySQL, quelli che utilizzano Access attraverso l'ODBC avrebbero dovuto modificare la parte di codice per l'utilizzo del database. L'utilizzo della gestione file mette tutti d'accordo su questo fronte.

La struttura del file "messaggi.txt"

Questo file è il "contenitore" di tutti i nostri messaggi. Ognuno di essi occupa sei linee così strutturate:

Data

Data di inserimento del messaggio.

Nome

Nome del visitatore.

E-mail

E-mail del visitatore.

Paese/città

Paese, città o zona geografica del visitatore.

Home-page

Eventuale home-page del visitatore.

Messaggio

Il messaggio del visitatore. Eventuali ritorni a capo inseriti nel form sono convertiti nel TAG HTML <BR>.

La gestione dei files

Il PHP mette a disposizione moltissime funzioni per l'utilizzo dei files. Una breve occhiata al manuale visualizzabile dal sito ufficiale del PHP ( www.php.net ) mostra le innumerevoli funzioni che questo linguaggio mette a disposizione. Tra le normali funzioni presenti in tutti i linguaggi per la lettura e scrittura sequenziale, il PHP mette a disposizione l'interessante funzione:

array file (string filename [, int use_include_path])

che memorizza automaticamente tutto il contenuto di un file di testo in un array. Per sapere quante linee sono presenti nel file di testo è sufficiente controllare la dimensione di questo array con la funzione "SizeOf":

int sizeof (array array)

Per memorizzare il contenuto di un file di testo in un array e per sapere quante linee lo compongono, è sufficiente scrivere:

$file=file("messaggi.txt");

$quanti=sizeof ($file);

Essendo ogni messaggio composto da sei linee, per sapere quanti messaggi sono presenti nel nostro Guestbook scriveremo:

$quanti=sizeof ($file)/6;

La paginazione

Se il nostro sito ha numerose visite e i messaggi di visitatori che si complimentano con noi sono numerosi, ecco che la visualizzazione di tutti i messaggi diventa problematica. La visualizzazione di 50 messaggi contemporaneamente può essere scomoda per la dimensione stessa della pagina e per il tempo che il server dovrà sprecare per la costruzione e l'invio di una così considerevole quantità di dati.

Ecco che allora possiamo aggiungere, grazie all'utilizzo di un array, una comoda paginazione. All'inizio dello script in PHP del Guestbook si possono notare queste linee:

<?

/* GUESTBOOK in PHP

'

' La variabile successiva è per il numero di messaggi per pagina

*/

$numero_messaggi=5;

?>

La variabile

$numero_messaggi
è modificabile a piacere e a seconda delle proprie esigenze e permette di impostare il numero di messaggi che i visitatori possono vedere in ogni pagina. Qui sotto possiamo vedere la parte di codice che visualizza il numero esatto di messaggi:

<?

$file=file("messaggi.txt");

/*

?

*/

if (!$pag) $pag=1;

$quanti=sizeof ($file)/6;

$inizio=($pag-1)*$numero_messaggi;

$fine=$inizio+$numero_messaggi;

if ($fine>$quanti) $fine=$quanti;

?>

La variabile

$pag
è quella che utilizzeremo per passare da una pagina alla successiva. Alla prima chiamata a questa variabile non sarà assegnato alcun valore: sarà di conseguenza la pagina "1", mentre
$inizio
e
$fine
faranno da puntatori ai valori corretti dell'array per la visualizzazione dei messaggi.

Impostati questi valori, possiamo sapere tutte le informazioni dei nostri messaggi con il codice successivo:

<?

for ($i = $inizio; $i<$fine; $i++) {

 $data=$file[$i*6];

 $nom=$file[1+$i*6];

 $posta=$file[2+$i*6];

 $paese=$file[3+$i*6];

 $home=$file[4+$i*6];

 $testo=$file[5+$i*6];

?>

Una volta visualizzati tutti i nostri messaggi, dobbiamo creare i link per chiamare le pagine successive o precedenti in caso il numero dei messaggi sia maggiore a quelli visualizzabili contemporaneamente. Per far ciò, è sufficiente un controllo:

<? if ($pag>1) {?>

<a href="guest.php?pag=<?=$pag-1?>">

<?}?>

Pagina precedente...

</a>

Molto semplicemente: si controlla quale pagina abbiamo visualizzato, se non siamo nella prima viene creato il link per la pagina precedente.

Analogamente, per visualizzare il link per la pagina successiva basterà questo codice:<? if ($fine!=$quanti) {?>

<a href="guest.php?pag=<?=$pag+1?>">

<?}?>

Pagina successiva...

</a>

Si controlla così che l'ultimo messaggio visualizzato (

$fine
) sia diverso dal numero di messaggi presenti nel Guestbook (
$quanti
), in questo caso è creato il link.

2 pagine in totale: 1 2

Attenzione: Questo articolo contiene un allegato.

Contenuti dell'articolo