2016-05-02 7 views
0

Dieser Code wird zum Beispiel der Zeichenfolge des Kommentars für die Datenbank nicht entkommen:

if ($_POST['comment']) { 
    $comment = mysql_real_escape_string(htmlentities($_POST['comment_txt'])); 
    $comment_insert = mysql_query("UPDATE msgs SET msg='$comment' WHERE user='$username'") 
    or die; 
    } 

aber dies wird:

if ($_POST['comment']) { 
    $comment_p = $_POST['comment_txt']; 
    $comment = mysql_real_escape_string(htmlentities($comment_p)); 
    $comment_insert = mysql_query("UPDATE msgs SET msg='$comment' WHERE user='$username'") 
    or die; 
    } 

Warum? Warum kann ich nicht einfach den $ _POST-Wert verlassen? Warum muss ich eine neue $ Variable für $ _POST definieren, um sie zu umgehen? Dies ist Sicherheitszange. Ich werde irgendwann zu PDO wechseln, aber im Moment stecke ich mit der alten MySQL-API fest.

+0

Ja, sorry, ich habe hier vertippt. Redigierte den Code in der Frage jetzt. Vielen Dank. –

+0

Es funktioniert auf '$ _POST' auch .. ich benutze immer die Funktion direkt auf' $ _POST', es scheint kein Problem in ur-Code, ich denke, kann wegen 'mysql' sein, einmal versuchen mit' mysqli' – phpfresher

Antwort

0

Das ist einfach falsch. Sie müssen nicht, bevor der Wert in dem $_POST Array in eine Variable setzen, es direkt auf dem $_POST Wert arbeitet auch

Betrachten obwohl mysqli oder PDO statt mysql verwenden.

3

Versuchen Sie dieses, es könnte Ihnen helfen:

$comment = mysql_real_escape_string(htmlentities($_POST['comment_txt'], ENT_QUOTES, "UTF-8")); 

Details von hier: PHP $_POST doesn't take accents

+0

würde es mache ich dasselbe, wenn ich meine Datenbank alle zusammen in utf-8 ändere? –

+1

Ich denke, kein Datenbankproblem, müssen Sie UTF-8 Meta-Tags hinzufügen. Folgen Sie dem Link, den ich angegeben habe .... –

Verwandte Themen