Hallo,
mich hat eine zeitlang das Problem mit Magic_Quotes und der Sonderzeichenmaskierung beschäftigt.
Bei Magic_Quotes wird ja nur vor die "gefährlichen" Sonderzeichen ein Backslash (\) gestellt und mittels einer Überprüfung mit get_magic_quotes_gpc und stripslashes wieder entfernt.
Aber dann kam das Problem mit der Sonderzeichenmaskierung!
Wenn ich ein ein Feld Sonderzeichen wie <, >, ", ... eingebe, so wird ja aus z.B. ä ein ä.
Nur wenn ich das Ganze dann aus der Datenbank wieder auslas, war dann das Problem da, dass ich entweder &auml; drannstehen hatte oder wenn ich alles vorher demaskiert habe, ich Probleme mit <, > und " bekommen habe, weil der Text danach einfach nicht mehr angezeigt wurde.
Als Lösung habe ich mir dann 2 Funktionen geschrieben:
htmlin maskiert z.B. Ähren --> &Auml;hren
htmlout macht selbst aus &amp;amp;Auml;hren wieder Ähren
Das Problem bei der Sache ist, dass ich jetzt feststellen musste, dass dadurch manche Scripte sehr sehr langsam werden und ich wollte euch fragen (ja, jetzt kommt endlich die Frage):
Wie löst ihr das Problem mit der Werteübergabe, Speicherung in der DB, dem Auslesen und wieder ausgeben in Formularfeldern?
Einerseits muss man sich vor SQL-Injections schützen, andererseits soll alles ganz normal angezeigt werden und auf jedem Server laufen!
Für Aufklärung wäre ich euch sehr dankbar.
gruß
Piremilok
mich hat eine zeitlang das Problem mit Magic_Quotes und der Sonderzeichenmaskierung beschäftigt.
Bei Magic_Quotes wird ja nur vor die "gefährlichen" Sonderzeichen ein Backslash (\) gestellt und mittels einer Überprüfung mit get_magic_quotes_gpc und stripslashes wieder entfernt.
Aber dann kam das Problem mit der Sonderzeichenmaskierung!
Wenn ich ein ein Feld Sonderzeichen wie <, >, ", ... eingebe, so wird ja aus z.B. ä ein ä.
Nur wenn ich das Ganze dann aus der Datenbank wieder auslas, war dann das Problem da, dass ich entweder &auml; drannstehen hatte oder wenn ich alles vorher demaskiert habe, ich Probleme mit <, > und " bekommen habe, weil der Text danach einfach nicht mehr angezeigt wurde.
Als Lösung habe ich mir dann 2 Funktionen geschrieben:
PHP-Code:
function htmlin(&$string, $replace = false) {
$text = $string;
if( is_array($text) )
foreach($text as $key => $value)
$text[$key] = htmlin($value, false);
else
$text = htmlentities($text, ENT_QUOTES, 'ISO-8859-15');
if($replace) $string = $text;
else return $text;
}
function htmlout(&$string, $replace = false) {
$text = $string;
$chars = get_html_translation_table(HTML_ENTITIES, ENT_QUOTES);
if( is_array($text) )
foreach($text as $key => $value)
$text[$key] = htmlout($value);
else {
$text = html_entity_decode($text, ENT_QUOTES, 'ISO-8859-15');
foreach($chars as $char) {
if( stristr($text, $char) ) {
$text = htmlout($text);
break;
}
}
}
if($replace) $string = $text;
else return $text;
}
htmlout macht selbst aus &amp;amp;Auml;hren wieder Ähren
Das Problem bei der Sache ist, dass ich jetzt feststellen musste, dass dadurch manche Scripte sehr sehr langsam werden und ich wollte euch fragen (ja, jetzt kommt endlich die Frage):
Wie löst ihr das Problem mit der Werteübergabe, Speicherung in der DB, dem Auslesen und wieder ausgeben in Formularfeldern?
Einerseits muss man sich vor SQL-Injections schützen, andererseits soll alles ganz normal angezeigt werden und auf jedem Server laufen!
Für Aufklärung wäre ich euch sehr dankbar.
gruß
Piremilok
Kommentar