Was macht WordPress, wenn magische Anführungszeichen auf dem Server deaktiviert sind?

Lesezeit: 3 Minuten

Wir haben kürzlich ein Upgrade auf PHP 5.4.15 durchgeführt, und es sind standardmäßig keine magischen Anführungszeichen aktiviert. Es war an der Zeit 🙂

Aber es stellt sich heraus, dass wp aus internen Kompatibilitätsgründen seine eigenen Schrägstriche zu POST und allem hinzufügt.

Jetzt hatte ich in vielen Plugins einige vernünftige Funktionen, die Schrägstriche entfernen würden, wenn sie von PHP hinzugefügt würden:

function POSTGET_stripslashes_all($forced=false)
    {
    if(!get_magic_quotes_gpc() and !get_magic_quotes_runtime()) if(!$forced) return;
    ....

Aber wp fügt Schrägstriche hinzu, unabhängig von den PHP-Einstellungen, also habe ich am Ende IMMER Schrägstriche entfernt, unabhängig von irgendwelchen Einstellungen. Das Problem ist, was wäre, wenn der Benutzer wörtliche Schrägstriche in seiner Eingabe verwenden wollte?

Wie bringt man etwas Sinn hinein? Ich möchte nicht immer Schrägstriche entfernen. Wie sind Sie das angegangen? Gibst du einfach auf und streifst alles ab, wenn es um wp geht? Gibt es eine nette Faustregel, die sagt, wo und wo nicht wp Dinge slashes?

Benutzer-Avatar
Johann

Nun, ich musste meine eigene Antwort finden.

file: wp-settings.php > function wp_magic_quotes() is called. 
  • Diese Datei ist fast enthalten, wenn wp ausgeführt wird, wird bedingungslos von wp-config.php eingeschlossen.
  • der Funktionsaufruf steht vor fast allem,
  • ABER aufgerufen nach advanced-cache.php
  • UND nach dem Aktionshaken do_action( ‘plugins_loaded’ ).

die Funktion selbst:

function wp_magic_quotes() (is in file wp-includes/load.php) 
     {
     if(get_magic_quotes_gpc()) strip_slashes()
     adds slashes to POST, GET, COOKIES and SERVER, using add_magic_quotes()
     }

Wenn Sie also entscheiden müssen, ob Sie Schrägstriche entfernen möchten oder nicht, verwenden Sie:

if(!get_magic_quotes_gpc() and !function_exists('wp_magic_quotes')) do_not_strip;

Und hier ist die vollständige Formularfunktion:

function POSTGET_stripslashes_all($forced=false)
    {
    global $POSTGET_stripslashes_all_done;
    if(!get_magic_quotes_gpc() and !function_exists('wp_magic_quotes')) if(!$forced) return;//wp check
    if($POSTGET_stripslashes_all_done) return;
    //stripslashes
    if(is_array($_POST))    $_POST=POSTGET_stripslashes_deep($_POST,$forced);
    if(is_array($_GET)) $_GET=POSTGET_stripslashes_deep($_GET,$forced);
    if(is_array($_REQUEST)) $_REQUEST=POSTGET_stripslashes_deep($_REQUEST,$forced);
    $POSTGET_stripslashes_all_done=true;
    }



function POSTGET_stripslashes_deep($value,$forced=false)
    {
    global $POSTGET_stripslashes_all_done;
    if(!get_magic_quotes_gpc() and !function_exists('wp_magic_quotes')) if(!$forced) return $value;
    if($POSTGET_stripslashes_all_done) if(!$forced) return $value;
    if(is_string($value)) return  stripslashes($value);
    if(is_array($value))
        foreach($value as $name=>$val)
            $value[$name]=POSTGET_stripslashes_deep($val,$forced);
    return $value;
    }

  • Wovon redest du, ‘der Code ist nicht gültig’? Lassen Sie uns nützliche Kommentare abgeben, dies ist Stackoverflow, kein Chatroom.

    – Johann

    28. November 2013 um 18:11 Uhr

  • Es gab einige Kommentare ohne irgendwelche //, was es nicht als PHP-Code lauffähig machte. Ungültiger PHP-Code. Aber eigentlich macht die Funktion Sinn, sie war nur schwer abzulesen. Ich wollte es ursprünglich positiv bewerten, aber es war so schwer zu lesen, dass ich beim letzten Mal aufgegeben habe. Ich werde es jetzt trotzdem hochstimmen… …ich benutze es jetzt einfach stripslashes() auf alle geposteten Daten in WP, und wenn ich da ganz sicher gehen will, würde ich die Daten clientseitig mit Javascript in BASE64 packen und so versenden und auf dem Server entpacken. Auf diese Weise kann ich sicher sein, dass WP oder PHP keine Schrägstriche hinzufügen.

    – gregn3

    3. Dezember 2013 um 19:02 Uhr


1054530cookie-checkWas macht WordPress, wenn magische Anführungszeichen auf dem Server deaktiviert sind?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy