Frage

Wenn ich magic_quotes eingeschaltet und ich verwende mysql_real_escape_string, wird die Zeichenfolge Doppel entkommen? Wird es zu Problemen führen?

Ich gehe davon auf der get_magic_quotes() Funktion so basiert, sondern nur eine Bestätigung sucht.

(. P. S Es ist einfacher, diese Frage zu stellen als Test es in meinem Büro mit allen Sicherheit, die wir an der richtigen Stelle - Es ist mir alles 10-15 zu konfigurieren nimmt eine nutzbare Umgebung zu bekommen)

War es hilfreich?

Lösung

Wenn Sie einen Wert von Get / Post / Cookie Eingang erhalten entkommen, wird es bereits einmal addslashes() angewendet es, so dass es durch mysql_real_escape_string() vorbei wird in der Tat, doppelte Anführungszeichen.

em Zum Strippen:

if (get_magic_quotes_gpc())
{
    $_GET = json_decode(stripslashes(json_encode($_GET, JSON_HEX_APOS)), true);
    $_POST = json_decode(stripslashes(json_encode($_POST, JSON_HEX_APOS)), true);
    $_COOKIE = json_decode(stripslashes(json_encode($_COOKIE, JSON_HEX_APOS)), true);
    $_REQUEST = json_decode(stripslashes(json_encode($_REQUEST, JSON_HEX_APOS)), true);
    ini_set('magic_quotes_gpc', 0);
}

Diese Frage einige andere Optionen für das Abstreifen zitiert hat / Umgang mit dem schrecklichen magic_quotes_gpc PHP ' Feature‘.

Andere Tipps

Lesen Sie die Dokumentation von mysql_real_escape_string (I hoffen, dass dies auch nicht schwer ist):

  

Hinweis: Wenn magic_quotes_gpc aktiviert ist, gilt zunächst stripslashes() auf die Daten. Mit Hilfe dieser Funktion auf Daten, die bereits entronnen wurde zweimal die Daten entweicht.

Natürlich ist der einfachste Weg, magic_quotes auszuschalten.
wuth übliche PHP / Apache config diese Zeile

php_flag magic_quotes_gpc 0

in der .htaccess-Datei wird die Sache tun.

aber für die Kompatibilität Zweck, eine Funktion kann auch in einiger config-Datei verwendet werden.

if ( get_magic_quotes_gpc( ) ) {
  $_GET = array_map_recursive('stripslashes', $_GET) ;
  $_POST = array_map_recursive('stripslashes', $_POST) ;
  $_COOKIE = array_map_recursive('stripslashes', $_COOKIE) ;
  $_REQUEST = array_map_recursive('stripslashes', $_REQUEST) ;
  if (isset($_SERVER['PHP_AUTH_USER'])) stripslashes($_SERVER['PHP_AUTH_USER']); 
  if (isset($_SERVER['PHP_AUTH_PW'])) stripslashes($_SERVER['PHP_AUTH_PW']);
}

eine der einfachsten

  

Wenn ich magic_quotes eingeschaltet und   Ich benutze mysql_real_escape_string, wird   Tring werden Doppel entkommen?

Ja, es wird aber man könnte so etwas wie dies zwar tun:

if (get_magic_quotes_gpc())
{
  $escaped = stripslashes($your_vars);
}

Hinweis: Sie können die Magie Zitate aus PHP.ini deaktivieren oder den folgenden Funktion verwenden Sie es außer Kraft zu setzen:

// no more magic quotes
function get_magic_quotes_gpc()
{ 
  return false;
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top