Moin!
> $headline = htmlentities(trim($_POST['headline']), ENT_COMPAT, 'utf-8');
> $quelle = htmlentities(trim($_POST['quelle']), ENT_COMPAT, 'utf-8');
> $url = htmlentities(trim($_POST['link']), ENT_COMPAT, 'utf-8');
> $nachricht = nl2br(htmlentities(trim($_POST['nachricht']), ENT_COMPAT, 'utf-8'));
> if(!get_magic_quotes_gpc()) {
> $headline = addslashes($headline);
> $quelle = addslashes($quelle);
> $url = addslashes($url);
> $nachricht = addslashes($nachricht);
> }
// Falsch verstanden! Wenn magic_quotes_gpc gesetzt ist, mußt du stripslashes() anwenden. Wenn es nicht gesetzt ist, mußt du nichts anwenden. Und generell mußt du stripslashes als allererstes auf die POST-Daten anwenden, noch bevor du irgendwas mit trim, htmlentities etc. machst.
> mysql_escape_string($headline);
> mysql_escape_string($quelle);
> mysql_escape_string($url);
> mysql_escape_string($nachricht);
> $query = "INSERT INTO tabelle SET feld1=_utf8'$headline',feld2=_utf8'$quelle',feld3=_utf8'$url',feld4=_utf8'$nachricht'";
Oben stehender Code speichert die Texte einschließlich HTML-Entities. Ist das sinnvoll oder sollte ich das lassen und htmlentities() erst bei Ausgabe der Ergebnisse eines SELECT-Statements ausführen?
Das solltest du lassen. Der Speichervorgang sollte möglichst nur die reinen Daten speichern, ohne schon auf eine spezielle Ausgabeart Rücksicht zu nehmen. Entities sind eine spezielle Ausrichtung auf HTML - dahin zu wandeln sollte erst bei der Ausgabe in das HTML-Format passieren.
Dasselbe gilt für nl2br, das darf auch erst bei der Ausgabe angewendet werden.
- Sven Rautenberg
--
My sssignature, my preciousssss!
My sssignature, my preciousssss!