Heim  >  Artikel  >  Backend-Entwicklung  >  Warum ist magic_quotes_gpc dynamisch geschlossen ungültig?

Warum ist magic_quotes_gpc dynamisch geschlossen ungültig?

小云云
小云云Original
2018-02-24 14:41:191395Durchsuche

Dieser Artikel beschreibt hauptsächlich das Problem des ungültigen dynamischen Schließens von magic_quotes_gpc in PHP. Ich hoffe, er kann Ihnen bei der Lösung dieser Art von Problem helfen.

Beim Durchsuchen von Online-Projekten habe ich gestern ein Problem festgestellt: In einigen Textausgaben steht vor den Anführungszeichen ein zusätzlicher Backslash, zum Beispiel:

Die Anführungszeichen enthalten zu viele „Backslashes“.

Anhand der auf der Seite angezeigten Ergebnisse lässt sich vermuten, dass die magic_quotes_gpc-Konfiguration in PHP aktiviert ist. Dann habe ich das Programm überprüft und festgestellt, dass in der Eintragsdatei diese Konfiguration dynamisch geschlossen wurde:

ini_set('magic_quotes_gpc', 'Off');

Warum wurde sie nicht wirksam? ?

Nach einigem Suchen haben mir meine Kollegen geholfen, den Grund zu finden. Es stellte sich heraus, dass die Anfrage analysiert wurde, bevor ich die Konfiguration dynamisch geändert hatte, sodass die Änderung für die aktuelle Anfrage nicht wirksam wurde.

Einzelheiten finden Sie auf der folgenden Webseite. Ein Kollege ist ebenfalls auf das gleiche Problem gestoßen:

https://bugs.php.net/bug.php?id=32867

magic_quotes_gpc wird beim Parsen der Anfrage angewendet, bevor Ihr PHP-Skript die Kontrolle übernimmt. Sie können diese Einstellung also in Ihrem Skript zwar ändern, sie hat jedoch keine Auswirkung.

Vorausgesetzt, dass auf dem Server mehrere Projekte vorhanden sind, der Reihe nach Um andere Projekte nicht zu beeinträchtigen, können wir die Konfiguration von php.ini nicht direkt ändern. Daher haben wir den von Molu vs. Zhuihui geschriebenen Code verwendet, um den GPC-Inhalt rekursiv zu verarbeiten:

if (ini_get('magic_quotes_gpc')) {
function stripslashesRecursive(array $array)
{
foreach ($array as $k => $v) {
if (is_string($v)) {
$array[$k] = stripslashes($v);
} else if (is_array($v)) {
$array[$k] = stripslashesRecursive($v);
}
}
return $array;
}
$_GET = stripslashesRecursive($_GET);
$_POST = stripslashesRecursive($_POST);
}

Verwandte Empfehlungen:

php-Anweisungen zur Verwendung der Funktion get_magic_quotes_gpc()

In Bezug auf Probleme mit dem automatischen Escapezeichen von PHP, die historischen Probleme von magic_quotes_gpc in der Konfiguration,

Einführung in die Verwendung der PHP-Funktion get_magic_quotes_gpc

Das obige ist der detaillierte Inhalt vonWarum ist magic_quotes_gpc dynamisch geschlossen ungültig?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn