Hat magic_quotes () wirken sich auf die Verwendung von mysql_real_escape_string () mit
-
30-09-2019 - |
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)
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ächststripslashes()
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;
}