Maison  >  Article  >  développement back-end  >  La solution de ThinkPHP pour l'échappement automatique par défaut lors de la soumission d'un formulaire

La solution de ThinkPHP pour l'échappement automatique par défaut lors de la soumission d'un formulaire

不言
不言original
2018-06-06 15:52:391165parcourir

Cet article présente principalement la solution à l'échappement automatique par défaut de ThinkPHP lors de la soumission d'un formulaire. Il peut résoudre le problème du transfert automatique des guillemets simples et doubles. Il propose deux solutions que chacun peut comparer et choisir, ce qui a une certaine valeur pratique. . Les amis dans le besoin peuvent se référer à

Cet article décrit l'exemple de la solution d'échappement automatique par défaut lors de la soumission d'un formulaire dans ThinkPHP. Partagez-le avec tout le monde pour votre référence. La méthode spécifique est la suivante :

1. Question :

Lors de la soumission d'un formulaire pour insérer des données dans ThinkPHP, les guillemets simples et doubles seront automatiquement échappés, cela Les barres obliques inverses seront ajoutées automatiquement, mais je ne souhaite pas ajouter de barres obliques inverses aux guillemets simples et doubles

Lors de la soumission d'un formulaire pour insérer des données dans ThinkPHP, les guillemets simples et doubles seront automatiquement convertis. , les barres obliques inverses seront automatiquement ajoutées, mais je ne souhaite pas ajouter de barres obliques inverses aux guillemets simples et doubles. Lors de la soumission d'un formulaire pour insérer des données dans ThinkPHP, les guillemets simples et doubles seront automatiquement échappés, des barres obliques inverses seront automatiquement ajoutées. mais je ne veux pas ajouter de barres obliques inverses aux guillemets simples et doubles. Par exemple : hds"gh"j'g'h sera automatiquement échappé vers : hds"gh"j' g'h.

Veuillez noter que ce dont vous avez besoin est d'annuler cette fonction d'échappement, plutôt que d'utiliser la fonction stripslashes() pour supprimer ces barres obliques inverses, c'est-à-dire que vous n'avez pas besoin de la fonction d'échappement automatique officielle.

2. Solution :

Recherchez la solution sur Internet :

1 Dans le répertoire thinkphp, ouvrez le répertoire ThinkPHPLibDriverDb dans l'ordre, et dans dbmysql.class Dans le fichier .php, modifiez la fonction escapeString à :

Copier le code Le code est le suivant :

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;  
}  
}

Fonction originale :

Copier le code Le code est le suivant :

public function escapeString($str) {  
//修改 周蛮子 放双引号双重转义  
if($this->_linkID) {  
return mysql_real_escape_string($str,$this->_linkID);  
}else{  
return mysql_escape_string($str);  
}  
}

2. Ajouter dans le fichier public :

Copier le code Coder comme suit :

//防止双重转义  
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);  
}

Remarque : Si le serveur permet l'échappement, alors après une nouvelle évasion via thinkphp, un bug de double échappement se produira dans le programme

Après modification, il n'y a aucun problème avec l'entrée en arrière-plan du programme de mon site Web. Il semble que si vous rencontrez l'utilisation de Thinkphp à l'avenir, veuillez noter que si le serveur a activé le filtrage des guillemets simples ou doubles, cela peut entrer en conflit avec ThinkPHP, alors ajoutez une couche de jugement, vous pouvez résolvez très bien ce problème.

Recommandations associées :

Solution à l'échec de la vérification automatique ThinkPHP

thinkphp réalise l'importation et export de données excel (avec dossier complet)

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn