Heedless
%Europe/Berlin %754 %2007, 19:06
Ik heb een invulveld, en de inhoud daarvan gaat naar mijn database.
Nu wil ik niet dat mensen er html in kunnen zetten.
Ik kan html tags eruit halen met deze code: $tekst = str_replace('<a>','',$tekst);
$tekst = str_replace('<b>','',$tekst);
$tekst = str_replace('<i>','',$tekst);
$tekst = str_replace('<strong>','',$tekst);
$tekst = str_replace('<u>','',$tekst);
maar dan heb ik nogal een lange lijst + dat ik bang ben codes te vergeten + dat dingen zoals <img ... > al moeilijker worden.
Is er niet een betere manier om dit te doen?
strip_tags heb ik al geprobeerd maar ik kreeg geen resultaat. Maar ook daarbij moet ik zelf alle mogelijkheden in gaan voeren.
edit:
weer eens te snel geweest.
ik gebruike nl2br() voordat hij op tags had gecontroleerd.
Nu heb ik deze code, en die werkt:
function removeEvilAttributes($tagSource)
{
$stripAttrib = "' (style|class)=\"(.*?)\"'i";
$tagSource = stripslashes($tagSource);
$tagSource = preg_replace($stripAttrib, '', $tagSource);
return $tagSource;
}
function removeEvilTags($source)
{
// $allowedTags='<a><br><b><h1><h2><h3><h4><i>' .
// '<img><li><ol><p><strong><table>' .
// '<tr><td><th><u><ul>';
$allowedTags = "";
$source = strip_tags($source, $allowedTags);
return preg_replace('/<(.*?)>/ie', "'<'.removeEvilAttributes('\\1').'>'", $source);
}
$tekst = removeEvilTags($tekst);
$titel = removeEvilTags($titel);
Nu wil ik niet dat mensen er html in kunnen zetten.
Ik kan html tags eruit halen met deze code: $tekst = str_replace('<a>','',$tekst);
$tekst = str_replace('<b>','',$tekst);
$tekst = str_replace('<i>','',$tekst);
$tekst = str_replace('<strong>','',$tekst);
$tekst = str_replace('<u>','',$tekst);
maar dan heb ik nogal een lange lijst + dat ik bang ben codes te vergeten + dat dingen zoals <img ... > al moeilijker worden.
Is er niet een betere manier om dit te doen?
strip_tags heb ik al geprobeerd maar ik kreeg geen resultaat. Maar ook daarbij moet ik zelf alle mogelijkheden in gaan voeren.
edit:
weer eens te snel geweest.
ik gebruike nl2br() voordat hij op tags had gecontroleerd.
Nu heb ik deze code, en die werkt:
function removeEvilAttributes($tagSource)
{
$stripAttrib = "' (style|class)=\"(.*?)\"'i";
$tagSource = stripslashes($tagSource);
$tagSource = preg_replace($stripAttrib, '', $tagSource);
return $tagSource;
}
function removeEvilTags($source)
{
// $allowedTags='<a><br><b><h1><h2><h3><h4><i>' .
// '<img><li><ol><p><strong><table>' .
// '<tr><td><th><u><ul>';
$allowedTags = "";
$source = strip_tags($source, $allowedTags);
return preg_replace('/<(.*?)>/ie', "'<'.removeEvilAttributes('\\1').'>'", $source);
}
$tekst = removeEvilTags($tekst);
$titel = removeEvilTags($titel);