Filter String Problem
portseven
- php
1 drdf
Tag,
wenn ich
if(!filter_var(..., Filter_sanitize_string)) {
$err = 'fehler';
} else {
echo 'erfolgreich';
}
einsetze, dann klappt es auch.
Problem:
Wenn ich meine Eingabe so mache:
<<<<TEXTEXT dann zeigt er mir "Fehler" an.
Wenn ich es so schreibe: TEXTTEXT<<< dann sagt er erfolgreich, aber filtert es trotzdem. Wie kann das sein das der Filter sozusagen True ist da er es filtert aber nicht "Fehler" anzeigt?
Hallo @portseven,
Deine if
ist nicht Typesicher.
Die Filterung von '<<<<TEXTEXT'
ergibt einen ''
(Leerstring) der als FALSE
gewertet wird.
var_dump(filter_var('<<<<TEXTEXT', FILTER_SANITIZE_STRING)); // string '' (length=0)
var_dump(filter_var('TEXTTEXT<<<', FILTER_SANITIZE_STRING)); // string 'TEXTTEXT' (length=8)
filter_var()
gibt im Fehlerfall ein FALSE
zurück. Sonst die gefilterten Daten.
Vllt hilft folgendes noch beim Verständnis:
$text = 'Lorem <span>ipsum</span>';
$foo = filter_var($text, FILTER_SANITIZE_STRING);
if ($foo === FALSE) {
echo 'ERROR: die Filterung ist fehlgeschlagen.';
}
if ($foo !== $text) {
echo 'Der Text wurde erfolgreich bereinigt und lautet nun: "'. $foo . '"';
}
if ($foo === $text) {
echo 'Der Text war von Beginn an rein und wurde daher nicht verändert.';
}