Hallo.
Kan iemand mij vertellen of het volgende script veilig is? Of heeft iemand misschien een beter script die ik mag gebruiken?
Het is een script voor BBcodes voor data dat is ingevoerd door de gebruiker.
Voordat de data in de database word gezet, gebruik ik de function Mysql_real_escape_string erop en deze functie word erop gebruikt voordat ik het echo.
Ik zat eerst eraan te denken om de data te exploden met spaties en daarmee BBcode te veranderen naar HTML, maar dit leek mij simpeler.
Groetjes, Remi.
Kan iemand mij vertellen of het volgende script veilig is? Of heeft iemand misschien een beter script die ik mag gebruiken?
Het is een script voor BBcodes voor data dat is ingevoerd door de gebruiker.
Voordat de data in de database word gezet, gebruik ik de function Mysql_real_escape_string erop en deze functie word erop gebruikt voordat ik het echo.
Ik zat eerst eraan te denken om de data te exploden met spaties en daarmee BBcode te veranderen naar HTML, maar dit leek mij simpeler.
PHP:
// Function voor het echo'en van tekst die in de database staat (En die door een ingevulde form van de gebruiker erin is gezet), dit is voor bijvoorbeeld forums.
function useroutputfilter($input,$rechten){
// De code in het ifje niet uitvoeren als de gebruiker waardoor het bericht is gepost Moderator rechten (Of hoger) heeft.
if($rechten < 1){
// Ik wil dat gebruikers die het prettiger vinden om HTML te gebruiken inplaats van BBcode dat kunnen doen, vandaar dat de onderstaande HTML code word omgezet in BBcode voordat Htmlspecialchars erop los word gegooid.
$htmlcodesarray2 = array(
"'\<b>(.*?)\</b>'is",
"'\<i>(.*?)\</i>'is",
"'\<u>(.*?)\</u>'is",
"'\<s>(.*?)\</s>'is",
"'\<center>(.*?)\</center>'is",
"'\<h2>(.*?)\</h2>'is",
"'\<a href=\"(.*?)\">(.*?)\</a>'is",
"'\<img src=\"(.*?)\" />'is"
);
$bbcodesarray2 = array(
"[b]\\1[/b]",
"[i]\\1[/i]",
"[u]\\1[/u]",
"[s]\\1[/s]",
"[center]\\1[/center]",
"[h]\\1[/h]",
"[url=\\1]\\2[/url]",
"[img]\\1[/img]"
);
$input = preg_replace($htmlcodesarray2,$bbcodesarray2,$input);
$input = htmlspecialchars($input);
}
$input = nl2br($input);
// Als devolgende regel er niet stond dan werkt NL2BR niet meer door de regel die erna komt.
$input = str_replace('<br />','<br/>',$input);
// Zo worden meerdere spaties achter elkaar niet genegeerd door de browser.
$input = str_replace(' ',' ',$input);
// BBcode to HTML
$bbcodesarray = array(
"'\[b](.*?)\[/b]'is",
"'\[i](.*?)\[/i]'is",
"'\[u](.*?)\[/u]'is",
"'\[s](.*?)\[/s]'is",
"'\[center](.*?)\[/center]'is",
"'\[h](.*?)\[/h]'is",
"'\[url=(.*?)\](.*?)\[\/url\]'is",
"'\[img](.*?)\[/img]'is",
);
$htmlcodesarray = array(
"<b>\\1</b>",
"<i>\\1</i>",
"<u>\\1</u>",
"<s>\\1</s>",
"<center>\\1</center>",
"<h2>\\1</h2>",
'<a href="$1" title="$1" target="_blank" class="tooltip">$2</a>',
'<img src="$1" title="$1" class="tooltip" />'
);
$output = preg_replace($bbcodesarray,$htmlcodesarray,$input);
// Het uiteindelijk returnen, klaar om te worden geecho'd.
return $output;
}
Groetjes, Remi.