2010-11-19 16 views
4

so habe ich ein Feld, das Sie eingeben können. Nach der Eingabe drücken Sie OK, und es wird einen Ajax-Aufruf an save.php senden und es in die Datenbank (mit PHP) eingefügt wird, und gib dann aus, was du eingegeben hast. Und dann greift ajax call on succes die Ausgabe und alarmiert sie (success: function(msg){ alert(msg) }). Die Antwort ist in HTML.'"ergibt sich als ' und "

Funktioniert gut, bis ich ' oder " im Feld verwende. Beispiel wenn ich schreibe: 'asdadsasd" es stellt sich heraus: \'asdadsasd\" Wie kann ich das beheben?

weiß nicht, ob es darauf ankommt, aber in save.php ich habe:

header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1 
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Date in the past 
header('Content-type: text/html; charset=utf-8'); 

Und es gibt die Meldung wie folgt aus:

echo htmlspecialchars(strip_tags($message), ENT_QUOTES, 'utf-8'); 
+2

Misconfigured PHP, sucht 'magic_quotes_gpc' in der php.ini – mario

Antwort

1

Versuchen stripslashes forderte sie auf. Ich denke, es fügt Schrägstriche hinzu, wenn es über Ajax gepostet/gesendet wird.

2

Dies ist höchstwahrscheinlich auf PHP außergewöhnlich hilfreich irritierend "magic quotes" Funktion. Magic Quotes fügt Schrägstriche vor ein- und doppelten Anführungszeichen in eingehenden Daten ein, die vom Benutzeragenten bereitgestellt werden (z. B. in $_GET, $_POST und $_COOKIE oder "GPC"), in einem vagen Versuch, denjenigen eine Sicherheit zu bieten, die die Gefahren nicht erkennen von nicht gescannter Benutzereingabe.

Natürlich sollten Sie immer nach magischen Anführungszeichen mit get_magic_quotes_gpc suchen, bevor Sie versuchen, irgendwelche GPC-Daten zu verwenden. Wenn es aktiviert ist, rufen Sie einfach stripslashes auf Ihrer Eingabe, bevor Sie es verwenden.

ich etwas ähnliches wie dies am Anfang jedes Skript verwende ich schreiben:

function cleanInput($input) 
{ 
    if (is_array($input)) 
    { 
     foreach ($input as &$value) 
     { 
      $value = cleanInput($value); 
     } 

     return $input; 
    } 
    else 
    { 
     return stripslashes($input); 
    } 
} 

if (get_magic_quotes_gpc()) 
{ 
    $_GET = cleanInput($_GET); 
    $_POST = cleanInput($_POST); 
    $_COOKIE = cleanInput($_COOKIE); 
    $_REQUEST = cleanInput($_REQUEST); 
} 
+0

Ich habe folgendes versucht: $ response = ((get_magic_quotes_gpc())? stripslashes ($ _ POST ['Kommentar']): $ _POST ['Kommentar']); es gibt mir immer noch: ' " " – Karem

1

Verwendung strip

Verwandte Themen