In diesem Artikel wird hauptsächlich die Lösung für das standardmäßige automatische Escapezeichen von ThinkPHP beim Absenden eines Formulars vorgestellt. Es kann das Problem der automatischen Übertragung von einfachen Anführungszeichen und doppelten Anführungszeichen lösen. Es bietet zwei Lösungen, die jeder vergleichen und auswählen kann Praktischer Wert. Freunde, die es benötigen, können sich auf
beziehen. Dieser Artikel beschreibt das Beispiel der standardmäßigen automatischen Escape-Lösung beim Senden eines Formulars in ThinkPHP. Teilen Sie es als Referenz mit allen. Die spezifische Methode ist wie folgt:
1. Frage:
Beim Absenden eines Formulars zum Einfügen von Daten in ThinkPHP werden einfache und doppelte Anführungszeichen automatisch maskiert Es werden automatisch Backslashes hinzugefügt, aber ich möchte keine Backslashes zu einfachen Anführungszeichen und doppelten Anführungszeichen hinzufügen.
Beim Absenden eines Formulars zum Einfügen von Daten in ThinkPHP werden einfache Anführungszeichen und doppelte Anführungszeichen automatisch konvertiert , Backslashes werden automatisch hinzugefügt, aber ich möchte keine Backslashes zu einfachen Anführungszeichen und doppelten Anführungszeichen hinzufügen. Wenn ich ein Formular zum Einfügen von Daten in ThinkPHP sende, werden einfache Anführungszeichen und doppelte Anführungszeichen automatisch mit Escapezeichen versehen. aber ich möchte keine Backslashes zu einfachen und doppelten Anführungszeichen hinzufügen. Zum Beispiel: hds"gh"j'g'h wird automatisch zu: hds"gh"j' g'h.
Bitte beachten Sie, dass Sie diese Escape-Funktion abbrechen müssen, anstatt die Funktion „stripslashes()“ zum Löschen dieser Backslashes zu verwenden. Das heißt, Sie benötigen nicht die offizielle automatische Escape-Funktion.
2. Lösung:
Suchen Sie die Lösung im Internet:
1 Öffnen Sie im ThinkPHP-Verzeichnis nacheinander das ThinkPHPLibDriverDb-Verzeichnis und ändern Sie es in der .php-Datei die EscapeString-Funktion zu:
Kopieren Sie den CodeDer Code lautet wie folgt:
public function escapeString($str) { //修改 周蛮子 放双引号双重转义 if (!get_magic_quotes_gpc()){ if($this->_linkID) { return mysql_real_escape_string($str,$this->_linkID); }else{ return mysql_escape_string($str); } } else { return $str; } }
Originalfunktion:
Code kopierenDer Code lautet wie folgt:
public function escapeString($str) { //修改 周蛮子 放双引号双重转义 if($this->_linkID) { return mysql_real_escape_string($str,$this->_linkID); }else{ return mysql_escape_string($str); } }
2. Hinzufügen:
Code kopierenDer Code lautet wie folgt:
//防止双重转义 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); }
Hinweis: Wenn der Server das Escapen aktiviert, tritt nach dem erneuten Escapen über thinkphp ein Double-Escape-Fehler im Programm auf.
Nach der Änderung scheint es kein Problem mit dem Hintergrundeintrag meines Website-Programms zu geben Wenn Sie in Zukunft Thinkphp verwenden, beachten Sie bitte, dass es zu Konflikten mit ThinkPHP kommen kann, wenn der Server das Filtern von einfachen oder doppelten Anführungszeichen aktiviert. Das Hinzufügen einer Beurteilungsebene ist daher in Ordnung.
Verwandte Empfehlungen:
Lösung für den Fehler bei der automatischen Verifizierung von ThinkPHP
thinkphp implementiert den Import und Export von Excel-Daten (mit vollständigem Fall)
Das obige ist der detaillierte Inhalt vonDie Lösung von ThinkPHP für die standardmäßige automatische Escape-Funktion beim Absenden eines Formulars. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!