[ Jaka_S @ 14.09.2004. 20:27 ] @
Pozdrav raja.

Molim vas, da mi pomognete kod jednog, onako više tehničkog, pitanja.
Pravim jedan mali forum u php-u i pokušavan koristnicima omogučiti prikaz koda.
E, sad prije slanja nove poruke u bazu, napravim ovo:

$text=addslashes(htmlspecialchars($text, ENT_QUOTES));

Time pokušavan izbječi unos koda, koji bi mogao napraviti probleme.

Evo sad problema. Pri unosu php koda upotrebljavam ubb kod, znači [php] i [/php].
Pri izpisu to parsiram in izpišem sa php funkcijom highlight_string($text).
Problem je u tome, što ova funkcija ne mjenja ekvivalente u html-u v normalne znakove.

Primjer:
Umjesto
Code:

<table width="140" cellpadding="1" bgcolor="#CCCCFF" class="pisava">
<tr>
<td width="20" height="20"><div align="left">


funkcija izpiše

Code:

&lt;table width=&quot;140&quot; cellpadding=&quot;1&quot; bgcolor=&quot;#CCCCFF&quot; class=&quot;pisava&quot;&gt;
  &lt;tr&gt;
    &lt;td width=&quot;20&quot; height=&quot;20&quot;&gt;&lt;div align=&quot;left&quot;&gt;


Nadam se, da ste razumjeli. :)

Zanima me, kako to riješavate u vašim forumima ili, kako je to riješeno recimo na ovom forumu?
Želeo bih koristiti funkciju highlight_string zato, što lijepo oboji kod. :)

Hvala unaprijed.
[ Not now, John! @ 14.09.2004. 23:06 ] @
Nemoj koristiti htmlspecialchars funkciju prije nego što tekst smjestiš u bazu. U bazu treba da bude smješten tekst onako kako ga je korisnik unio. Dakle, koristi samo addslashes ili mysql_encode_string.
Kada tekst prikazuješ onda koristi htmlspecialchars funkciju. Vjerovatno prije nje treba pozvati tu highlight funkciju šti želiš.
[ Jaka_S @ 15.09.2004. 22:38 ] @
Probao sam tu mogučnost, ali nema razlike.

Keč je u tome, što za izpisivanje koda između delimitera [PHP] ne trebam htmpspecialchar, a za sav ostali text trebam zbog sigurnosti.

Kako to riješiti?

LP