Cerca nel blog

Pubblicità

banner-125x125 banner-125x125 banner-125x125 banner-125x125

Feed RSS e Newsletter

Puoi seguire il mio blog abbonandoti al feed RSS, se non sai cos'è un feed RSS prova a guardare questo video... Spiega tutto!

Icona Feed RSS

Twitter

PayPal

Se ti piace questo blog puoi pensare ad una donazione.

Tutti i fondi ricevuti saranno utilizzati per il mio sollazzo personale. :-)

Ultimi commenti...

VITO: Il sito dice che accetta pagamenti con carta di credito ,visa e mastercard……… ;….la...

Napolux: @ Davide Salerno: Domanda banale… Dopo i 20 anni IMHO si sfondano… ;)

Davide Salerno: Come sono le svedesi?

Napolux: @ VITO: In teoria non c’è bisogno di collegare la carta all’account, ma non lo so di preciso, ti...

VITO: Volevo chiedervi se è possibile effettuare pagamenti online con carta prepagata paypal, in siti dove accettano...

MiniWiki in PHP

mercoledì 1 novembre 2006
1 Star2 Stars3 Stars4 Stars5 Stars Vota!
Loading ... Loading ...

Oggi, tanto per restare sul semplice, vediamo come realizzare un piccolo wiki in PHP che utilizzi la sintassi BBCode e faccia automaticamente il parsing di url e indirizzi email.

Cosa ci serve?

  • Un parser BBCode (un mio vecchio progettino)
  • Un file di testo che contenga il testo della paginetta Wiki
  • Il wiki vero e proprio, che si occupi di gestire le operazioni di modifica, ecc...

Il parser BBCode non è altro che una funzione php che riceve come parametro la stringa di cui fare il parsing: la stringa viene restituita dopo che la funzione si è occupata di tradurre i tag BBCode (scritti tra parentesi quadre) in codice html, per fare questo si ricorre ad una semplice str_replace().

$string = str_replace(BBCode,HTML, $string);

Per url e indirizzi email si ricorre a token ed espressioni regolari. C'è un sacco di documentazione online, senza contare che io con le espressioni regolari sono veramente una capra, quindi tralascio spiegazioni più dettagliate.

Oltre ad occuparsi dell'interpretazione dei BBCode il parser si occupa anche di "sicurezza": traduce i caratteri che delimitano i tag in entità html in modo che nessuno possa includere codice "cattivello" all'interno del wiki. Il parser è incluso nel file .zip che sarà linkato alla fine del post.

wiki.txt è il file dove andremo a memorizzare il testo del wiki. Nessun database quindi. Ogni volta che il wiki viene modificato il testo viene salvato in questo file.

Veniamo al bello.

Il file index.php, se chiamato senza parametri carica il testo presente in wiki.txt, lo parsa e lo stampa a video. Tutto questo in qualche riga di codice:

// STAMPA
if(!isset($_GET["op"]))
{
$fp = fopen("wiki.txt","r") or die("Errore di lettura.");
$parsed = "";
while ($data = fread($fp, 4096))
{
$parsed .= $data;
}
fclose($fp);
parsing($parsed);
print($parsed);
}

Se invece chiamiamo index.php col parametro GET op=edit (index.php?op=edit) ci viene mostrato il modulo di modifica del wiki, dove potremmo inserire tutto il testo che ci pare.

Una volta premuto il tasto "Salva", viene richiamato ancora una volta index.php, che riceve in POST il testo che abbiamo scritto. Il tutto viene salvato nel file wiki.txt, e ristampato a video.

// SALVA TESTO
if(isset($_POST["wiki"]))
{
$fp = fopen("wiki.txt","w") or die("Errore apertura file.");
fwrite($fp,$_POST["wiki"]);
fclose($fp);
}

Tutto in un file quindi. Piccolo, portabile e non sporca troppo in giro. :mrgreen:

Trovate un esempio qui e il codice (liberamente scaricabile) qua.

ATTENZIONE

Il codice presentato è poco pratico, sicuramente migliorabile e forse non molto sicuro. E' un esempio di quello che php permette di fare, non un wiki bello e pronto da usare: non ha alcun log delle modifiche, nessun UNDO e nessuna possibilità di proteggere il wiki con password. Questo script può andare bene per scopi che non vanno oltre quelli didattici.

Tra le altre cose questo post (e il codice relativo) è stato scritto in macchina in una 30ina di minuti...

Potenza della noia e del wardriving.

P.s.

Non è questo il post interessante che dicevo prima.

Questo articolo è stato pubblicato mercoledì, 1 novembre 2006 alle ore 22:48 Se non vuoi perdere nemmeno un articolo del mio blog abbonati al feed RSS. Se non sai cos'è un feed RSS puoi guardare questo video, spiega tutto!

In alternativa puoi abbonarti alla newsletter, riceverai un'email ogni volta che verrà pubblicato un nuovo post. Il tuo indirizzo email sarà gestito da Feedburner.

  

5 Commenti a “MiniWiki in PHP”

  1. tommi scrive:

    Carino, molto carino, ma occhio che i backslash prima degli apostrofi aumentano in maniera esponenziale ad ogni modifica ;)

  2. Napolux scrive:

    Eh, lo so, ma è solo una piccola demo ;)

  3. tommi scrive:

    sto modificando il tuo script per togliere il problema dei backslash e per fare in modo che il testo sia editabile direttamente dalla stessa pagina utilizzando un signor ajax. la prima persona che dice ‘uuuu come siamo web2.0′ verrà defenestrata. chiaramente se per te va bene, eh

  4. Napolux scrive:

    Autorizzo in toto l’utilizzo del codice e l’eventuale defenestrazione di persone.

    :mrgreen:

  5. Coders4fun » Wordpress Plugin: Wiki-Dashboard 0.1 scrive:

    [...] Parte del codice è basata sull’ottimo lavoro di Napolux, nell’articolo MiniWiki in PHP. [...]