Aktueller Standort: Startseite> Neueste Artikel> Wie verwendet ich die Funktion get_magic_quotes_gpc, um festzustellen, ob magische Zitate aktiviert sind? Best Practice Analysis

Wie verwendet ich die Funktion get_magic_quotes_gpc, um festzustellen, ob magische Zitate aktiviert sind? Best Practice Analysis

gitbox 2025-06-10

In der Geschichte von PHP war Magic Quotes einst eine Standardfunktion, die die Verarbeitung von Daten von GET, Post und Cookie automatisch hinzufügt, um Sicherheitsprobleme wie die SQL -Injektion zu verhindern. Da jedoch die Verwirrung über die Bequemlichkeit mehr als die Bequemlichkeit ist, wurden die magischen Zitate vollständig aus dem PHP 5.4.0 entfernt.

Bei der Aufrechterhaltung einiger alter Systeme können wir jedoch immer noch PHP 5.3 und darunter begegnen. Es ist sehr wichtig zu bestimmen, ob die magischen Zitate eingeschaltet sind. In diesem Artikel wird vorgestellt, wie die Funktion von GET_MAGIC_QUOTES_GPC () verwendet wird, um Urteile zu fällen und entsprechende Vorschläge für bewährte Verfahren abzugeben.

1. Einführung in die Funktion get_magic_quotes_gpc ()

get_magic_quotes_gpc () ist eine integrierte Funktion, die von PHP bereitgestellt wird, um festzustellen, ob Magic_quotes_GPC aktiviert ist. Sein Rückgabewert ist ein Boolescher:

  • Return true, um anzuzeigen, dass die magischen Zitate aktiviert sind;

  • Falsch zurückgeben bedeutet, dass die magischen Zitate deaktiviert sind.

Beispielcode:

 if (get_magic_quotes_gpc()) {
    echo "Magische Zitate sind eingeschaltet";
} else {
    echo "Magische Zitate geschlossen";
}

Wenn Sie beim Ausführen der Funktion eine Fehlermeldung wie "undefinierte Funktion" erhalten, bedeutet dies, dass Ihre PHP -Version höher als 5.4 ist und die magischen Zitate entfernt wurden.

2. Warum müssen Sie magische Zitate beurteilen?

Obwohl die ursprüngliche Absicht magischer Zitate gut ist, wird dies tatsächlich eine wiederholte Flucht von Daten verursachen. Entwickler müssen dynamisch beurteilen, ob man StripLashes () basierend auf der Betriebsumgebung manuell behandeln soll. Zum Beispiel:

 $user_input = $_POST['username'];

if (get_magic_quotes_gpc()) {
    $user_input = stripslashes($user_input);
}

Dieser Code stellt sicher, dass die Daten von $ user_input aufgrund magischer Zitate nicht redundant entkommen werden, was die nachfolgende einheitliche Verarbeitung erleichtert.

3. Best Practice: Einheitliche Verarbeitung von Benutzereingaben

Am meisten empfohlen ist es, alle GPC -Daten einheitlich am Eingang einheitlich zu verarbeiten, anstatt nur jedes Mal zu beurteilen:

 function strip_magic_quotes(&$array) {
    foreach ($array as $key => $value) {
        if (is_array($value)) {
            strip_magic_quotes($array[$key]);
        } else {
            $array[$key] = stripslashes($value);
        }
    }
}

if (function_exists('get_magic_quotes_gpc') && get_magic_quotes_gpc()) {
    strip_magic_quotes($_GET);
    strip_magic_quotes($_POST);
    strip_magic_quotes($_COOKIE);
}

Diese Methode stellt sicher, dass alle Benutzereingabedaten in der Anwendung von Anfang an "gereinigt" werden und die nachfolgende logische Verarbeitung vereinfacht.

4. Vorschläge: Aktualisieren Sie PHP, um magische Zitatfallen zu vermeiden

Obwohl Kompatibilität mit den oben genannten Methoden behandelt werden kann, besteht die beste Lösung darin, die PHP -Version zu aktualisieren . Moderne PHP -Frameworks (wie Laravel, Symfony usw.) unterstützen oder verlassen sich nicht mehr auf magische Zitate. Es gibt vollständigere Methoden zur Datenfilterung und Sicherheitskontrolle, z. B.:

  • Verwenden Sie filter_input () und andere Eingabefilterfunktionen;

  • Verwenden Sie PDO -Bindungsparameter, um die SQL -Injektion zu verhindern.

  • Verwenden Sie HTMLSpecialChars () für die HTML -Ausgabe.

5. Empfohlene Debugging -Auxiliary -Tools

Beim Debuggen eines alten PHP -Systems können Sie ein einfaches Debugging -Skript verwenden, um schnell festzustellen, ob die aktuelle Umgebung mit magischen Zitaten eingeschaltet wird:

 echo '<pre>';
echo 'magic_quotes_gpc: ' . (get_magic_quotes_gpc() ? 'ON' : 'OFF') . PHP_EOL;
echo 'Sample $_GET: ' . print_r($_GET, true);
echo '</pre>';

Greifen Sie nach der Bereitstellung des Skripts auf die URL zu, wie z. B.:

 http://gitbox.net/debug.php?name=O\'Reilly

Wenn Sie die Ausgabe als:

 name => O\\'Reilly

Dies bedeutet, dass die magischen Zitate wirksam haben (Backslashes werden automatisch hinzugefügt) und StripLashes () sind erforderlich.