Un Forum con PHP ed XML

di: Gabriele Farina     06 Maggio 2004

Benvenuti a tutti. Oggi cominciamo una breve serie di articoli che introdurrà le tecniche che si trovano alla base della realizzazione di un forum. Il nostro forum includerà solamente le funzionalità base, mentre verrà lasciato a voi il compito di estenderlo al fine di renderlo completo; svilupperemo una semplice amministrazione parallela, che ci permetta di agire agilmente sulla struttura del forum.

L'applicativo che mi propongo di mostrare, è stato sviluppato in modo da sfruttare una semplice interfaccia per prelevare e depositare i dati, permettendo al forum di essere sviluppato utilizzando qualsiasi tipo di supporto per il salvataggio dei dati (a patto che vengano estese le interfacce in modo corretto).

Noi svilupperemo solamente il supporto per XML per vari motivi:

  • Esistono pochissimi forum che possono lavorare senza database; anche se l'utilizzo dei database incrementa le prestazioni, non è comunque da sottovalutare il fatto che molti spazi web non supportano ancora i database
  • L'XML è un linguaggio molto potente e facilmente estendibile, il che ci permetterà, in futuro, di agire sulla struttura della nostra applicazione anche attraverso programmi scritti da terzi
  • PHP sta migliorando di molto il supporto all'XML
  • La gestione di XML tramite PHP è un argomento poco trattato, ed in questo articolo mi pongo l'obiettivo di introdurne il funzionamento

Il forum sarà strutturato in modo da avere una struttura ad albero virtualmente infinita: sarà possibile creare delle categorie principali alle quali associare infinite sottocategorie.

I messaggi potranno essere postati all'interno di ogni categoria, anche se questa avrà a disposizione delle sottocategorie. Viene volontariamente tralasciato il processo di autenticazione, la ricerca e la moderazione, che potranno essere aggiunte in futuro in caso ne abbiate bisogno. Prima di continuare la lettura scaricate i file utili a seguire il tutorial. Il codice è ampiamente commentato per favorirne la comprensione.

La struttura del filesystem

Il nostro applicativo salverà i dati direttamente all'interno del filesystem, in modo da permettere un controllo agile dei dati.

All'interno della cartella bacheche (possibilmente protetta con i giusti permessi) avremo:

  • un numero di cartelle corrispondenti alle bacheche principali, aventi come nome un numero crescente da 1 ad N
  • Un file XML (chiamato struttura.xml) che conterrà informazioni relative alla struttura delle bacheche: ad ogni cartella assocerà un nome ed una descrizione in modo da permetterci di visualizzare un elenco auto-descrittivo dei forum disponibili

All'interno di ogni singola cartella, sarà presente una struttura simile a quella della cartella bacheche con alcune informazioni aggiuntive:

  • un numero variabile di file XML aventi come nome un numero crescente da 1 ad N, che conterranno i post e le risposte scritte dagli utenti
  • un file post.xml che conterrà informazioni relative ad ogni singolo file di post: ad ogni file verrà associato un titolo ed eventuali informazioni utili

Seguendo le nostre direttive, il nostro filesystem dovrebbe avere un aspetto simile al seguente

Figura 1
la figura del filesystem

I file XML avranno una struttura molto semplice, che ci permetterà di gestire le informazioni contenute senza troppe difficoltà.

Il file struttura.xml avrà un nodo principale di nome struttura contente un numero di figli di nome forum pari al numero di cartelle contenute nella directory in cui si trova il nostro file. Il tag forum avrà un attributo, id che rappresenterà il nome della cartella a cui le informazioni fanno riferimento, e due figli, nome e descrizione, che conterranno rispettivamente il nome della bacheca e la descrizione testuale di questa ultima.

Il file post.xml avrà un nodo principale di nome post avente un numero di figli di nome td pari al numero di file XML presenti nella bacheca corrente. Ogni nodo td, avrà un attributo id contente il nome del file a cui le informazioni fanno riferimento, e due figli, nome e riassunto, che rappresenteranno rispettivamente il titolo ed un breve e opzionale riassunto della discussione.

Infine i file XML numerati avranno un nodo principale di nome discussione avente un numero di nodi figli di nome post pari al numero di post contenuti in una singola discussione. Ognuno di questi nodi conterrà i figli data, rappresentante la data di creazione, autore, rappresentate l'autore ed infine contenuto, che rappresenta il testo visibile del post.

Guide PHP

Guida Yii Framework

Come creare applicazioni Web in modo semplice e veloce con il...

Guida Zend Framework

Diventate professionisti dello sviluppo Web. Zend Framework è lo...

Guida Applicazioni Facebook con PHP

Come realizzare un'applicazione per Facebook. Dalle basi della...

Altre guide

Newsletter @PHP

Ogni lunedì, direttamente nella tua e-mail: script, articoli, guide e tutorial su PHP, MySQL e Apache.

Iscriviti alla newsletter

Altre newsletter

Corsi in aula

Corso PHP per Webmaster

11 Giugno 2012 a Milano
Disponibilità: 7 Posti

Corso Google AdWords Base

25 Giugno 2012 a Milano
Disponibilità: 7 Posti

Corso Google AdWords Base

05 Giugno 2012 a Roma
Disponibilità: 7 Posti