2010-11-29 11 views
-1

Ich erhalte verschwimmen diese: PWie entferne ich Backslash von den Benutzern Eingang

function escape($string) 
{ 
    $string = stripslashes($string); 

    if (function_exists('mysql_real_escape_string')) { 
     return mysql_real_escape_string($string, $this->connection); 
    } else { 
     return mysql_escape_string($string); 
    } 
} 

$content = '""""""test\'te%%%%st`test_huhu\'_'; 

echo '<br>output 1 = '.stripslashes($content); 
echo '<br>output 2 = '.$db->escape($content); 

Der Ausgang

output 1 = """"""test'te%%%%st`test_huhu'_ 
output 2 = \"\"\"\"\"\"test\'te%%%%st`test_huhu\'_ 

Wie output 2 machen gleiche sein wird wie output 1 und warum die output 2 so zu sein?

+2

Ich verstehe nicht, was Sie fragen. In Ausgabe 2 sind alle Anführungszeichen mit mysql_real_escape_string() 'maskiert. Wenn Sie das nicht wollen, tun Sie es nicht. – Jonah

+1

Ich bin verwirrt. Ausgabe 2 scheint eine vorbereitete Zeichenfolge zu sein, die bereit ist, in eine MySQL-Datenbank eingefügt zu werden. Nach dem Einfügen und der nachfolgenden Auswahlabfrage sind die Schrägstriche nicht vorhanden. – Stephen

+0

@Stephen - ja, aber die Daten werden in db genau mit dem Ausgang 2 gespeichert – Blur

Antwort

4

mysql_real_escape_string Escape alle " und ' das ist, warum Sie alle diese Schrägstriche bekommen. Wenn Sie die Schrägstriche vor dem Einfügen der Daten in eine Datenbank entfernen, sind Sie offen für Angriffe, die für die Sicherheit sehr schlecht sind.

Verwandte Themen