2011-01-08 10 views
0

Hey Leute, schaute auf die PHP-Dokumente und googelte herum, aber keine Freude. Das ist mein Code-Snippet, das htmlspecialchars scheint nicht zu funktionieren, falscher Gebrauch davon?htmlspecialchars falsche Verwendung?

$query="SELECT * FROM likes"; 
$result=mysql_query($query); 

$num=mysql_numrows($result); 
$liked=htmlspecialchars($liked, ENT_QUOTES); 
$liked=$_POST['liked']; 

$query = "INSERT INTO likes VALUES ('','$name','$liked')"; 

Danke Jungs, James

Antwort

4

Du es mit $_POST['liked'] in der unmittelbar folgenden Zeile überschrieben wird. Schalte die zwei Zeilen um. Oder geben Sie einfach die POST var in die Funktion direkt:

$liked=htmlspecialchars($_POST['liked'], ENT_QUOTES); 

Auf jeden Fall sollten Sie mysql_real_escape_string() verwenden werden, um Ihre SQL-Abfrage params zu entkommen. HTML-Escapes nur speichern, wenn Sie die Daten anzeigen möchten.

+0

Danke BoltClock, das hat perfekt funktioniert! :) Wenn es Ihnen nichts ausmacht, was sollte ich hinzufügen, um die mysql-Injektionen zu entkommen? (Wirklich neu bei PHP und MySQL)! Nochmals vielen Dank – DexCurl

+0

Oder verwenden Sie parametrisierte Abfragen, die Sie vor SQL-Injection-Angriffen schützen. (mysql_real_escape_string() 'ist anfällig, wenn einige Zeichensätze für die Verbindung verwendet werden, da es keine länderspezifischen Anführungszeichen berücksichtigt.) – cdhowie

+0

@James Whelton: Entkomme jeden deiner Werte, indem du ihn durch die Funktion 'mysql_real_escape_string()' übergibst . Tun Sie dies, bevor Sie Ihre SQL-Abfrage erstellen. – BoltClock

Verwandte Themen