Was sind magische Anführungszeichen:
Magische Anführungszeichen werden vom Programm verwendet, um die in PHP eingegebenen Daten automatisch zu konvertieren Skriptprozess. Wenn diese Option aktiviert ist, werden alle ' (einfaches Anführungszeichen), " (doppeltes Anführungszeichen), (Backslash) und NULL-Zeichen automatisch mit einem Backslash maskiert. Der Effekt ist genau der gleiche wie bei der Funktion addslashes().
Magic Quotes-Direktive:
magic_quotes_gpc wirkt sich auf HTTP-Anfragedaten aus (GET, POST und COOKIE). Der Standardwert ist in PHP aktiviert Die meisten Funktionen, die Daten aus externen Quellen abrufen, einschließlich Datenbanken und Textdateien, werden zur Laufzeit geändert. Siehe set_magic_quotes_runtime() und get_magic_quotes_runtime(). Einfache Anführungszeichen werden anstelle von Backslashes maskiert. Wenn beide Optionen aktiviert sind, werden einfache Anführungszeichen, Backslashes und NULL-Zeichen nicht maskiert. ini_get().
Die Wirkung von magischen Anführungszeichen:Die magischen Anführungszeichen wurden ursprünglich aus Sicherheitsgründen eingeführt, um SQL-Injection zu verhindern, was PHP-Neulingen beim Schreiben helfen kann relativ sicherer Code, aber heute sind sich Programmierer dieses Sicherheitsproblems bereits bewusst und verwenden schließlich den Datenbankübertragungsmechanismus oder vorbereitete Anweisungen, um die Funktion der magischen Anführungszeichen zu ersetzen:
Portabilität: Beim Programmieren. Es wird davon ausgegangen, dass das Öffnen oder Schließen die Portabilität beeinträchtigt. Sie können mit get_magic_quotes_gpc() überprüfen, ob es geöffnet ist, und die Leistung entsprechend programmieren: Da nicht alle maskierten Daten in die Datenbank eingefügt werden müssen Wenn PHP maskiert ist, hat dies einen gewissen Einfluss auf die Ausführungseffizienz des Programms (Aufruf der Escape-Funktion zur Laufzeit. Beispielsweise ist addslashes() effizienter. Obwohl php.ini-dist diese Option standardmäßig aktiviert, ist php. ini-recommended deaktiviert es standardmäßig, hauptsächlich aus Leistungsgründen: Aus Unannehmlichkeiten müssen nicht alle Daten maskiert werden. Es ist sehr ärgerlich, maskierte Daten an Stellen zu sehen, an denen eine Escape-Funktion nicht erforderlich ist In einem Formular werden Sie eine Menge sehen. Um dieses Problem zu lösen, können Sie die Funktion „stripslashes()“ verwenden.Magische Anführungszeichen wechseln:
magic_quotes_gpc kann nicht über ini_set() festgelegt werden. Es gibt drei Möglichkeiten, magic_quotes_gpc festzulegen. 1. Ändern Sie die PHP-Konfigurationsdatei php.ini. Diese Methode erfordert Administratorrechte auf dem Server, um ihn zu ändern. Wenn es sich nur um einen virtuellen Raum handelt, können Sie nur die beiden letztgenannten Methoden verwenden.; Magic quotes ; Magic quotes for incoming GET/POST/Cookie data. magic_quotes_gpc = Off ; Magic quotes for runtime-generated data, e.g. data from SQL, from exec(), etc. magic_quotes_runtime = Off Use Sybase-style magic quotes (escape ' with '' instead of \'). Magic_quotes_sybase = Off
php_flag magic_quotes_gpc Off
Beispielcode:
<?php if (get_magic_quotes_gpc()) { function stripslashes_deep($value) { $value = is_array($value) ? array_map('stripslashes_deep', $value) : stripslashes($value); return $value; } $_POST = array_map('stripslashes_deep', $_POST); $_GET = array_map('stripslashes_deep', $_GET); $_COOKIE = array_map('stripslashes_deep', $_COOKIE); $_REQUEST = array_map('stripslashes_deep', $_REQUEST); } ?>
Zusammenfassung:
Magische Anführungszeichen wurden ursprünglich eingeführt, um SQL-Injection zu verhindern, was für Entwickler von Vorteil ist, Friend aber Bringt auch viele Unannehmlichkeiten mit sich, wenn man es verwendet. Jetzt gibt es mehr und bessere Alternativen. Wenn Sie also noch in PHP 5.3.0 oder einer Version vor PHP 5.3.0 entwickeln, sollten Sie versuchen, die Verwendung von magischen Anführungszeichen zu vermeiden seit PHP 5.4.0 entfernt.Das obige ist der detaillierte Inhalt vonWas sind magische Anführungszeichen in PHP?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!