-
PHP: firma in un forum
Salve!
Sto creando un forum in PHP (non uso quello di PHPBB perchè non mi piace =P) e vorrei mettere ad ogni utente la firma sotto ogni messaggio.
Il problema è che non so come riformattarla in un formato diverso dall'HTML (se gli utenti modificano la firma e danno un invio al posto del <br> per andare a capo, ovviamente lo script non lo esegue e riporta tutto su una riga). Inoltre vorrei aggiungere anche i BBCodes.
Come posso fare? xD
-
Per andare a capo, prova ad usare http://php.net/manual/en/function.nl2br.php
-
Comunque non esiste solo phpbb. C'è anche smf; mybb; e tanti,tanti,tanti altri :P
-
Ok, sono riuscito ad andare a capo xD
E se volessi scrivere delle parti di codice HTML senza che lo script le interpreti?
Tipo qui in questo forum posso scrivere tranquillamente <img src="boh"> senza che me lo interpreti come un tag HTML.
E per aggiungere i BBCode? =V
-
So che ci sono tipo infiniti forum in php precostruiti, però la tabella degli utenti dev'essere condivisa anche con altri programmi che ho ideato, non voglio creare due tabelle utenti differenti sia per i programmi che per il forum =P
-
È importantissimo filtrare l'html (altrimenti, in breve tempo, qualcuno inietterà codice potenzialmente dannoso).
Per farlo puoi usare htmlspecialchars o htmlentities (leggi e decidi in base alle tue esigenze).
Per i bbcode puoi usare str_replace ad esempio (copia incollato da rapida ricerca su google):
Codice PHP:
// [b] and [/b] for bolding text.
$text = str_replace("[b]", '<b>', $text);
$text = str_replace("[/b]", '</b>', $text);
// [u] and [/u] for underlining text.
$text = str_replace("[u]", '<u>', $text);
$text = str_replace("[/u]", '</u>', $text);
// [i] and [/i] for italicizing text.
$text = str_replace("[i]", '<i>', $text);
$text = str_replace("[/i]", '</i>', $text);
// colours
$text = preg_replace("/\[color=(\#[0-9A-F]{6}|[a-z]+)\]/", '<span style="color:$1">', $text);
$text = str_replace("[/color]", '</span>', $text);
-
Ok, ora presumo di essere apposto, se incorro in qualche altro problema ve lo faccio sapere xD
Grazie mille!