Que fait la fonction php get_magic_quotes_gpc() ?
Quand j'ai expliqué la différence entre la fonction php stripslashes() et la fonction addlashes() plus tôt, j'ai mentionné la fonction get_magic_quotes_gpc(), alors que fait cette fonction ? Ce chapitre présentera quelques descriptions de la fonction get_magic_quotes_gpc()
et de ses éléments associés.
La fonction get_magic_quotes_gpc est utilisée pour déterminer si des barres obliques sont ajoutées aux données fournies par l'utilisateur. C'est dans le fichier de configuration php.ini. La fonction get_magic_quotes_gpc() est présentée en détail ci-dessous.
Introduction à la fonction get_magic_quotes_gpc
Obtenir la valeur de la variable d'environnement PHP magic_quotes_gpc, qui est une fonction système PHP.
Syntaxe :
long get_magic_quotes_gpc(void);
Valeur de retour : entier long
Cette fonction obtient la variable magic_quotes_gpc de l'environnement PHP valeur de configuration (GPC, Get/Post/Cookie). Renvoyer 0 signifie désactiver cette fonction ; renvoyer 1 signifie activer cette fonction. Lorsque magic_quotes_gpc est activé, tous les caractères ' (guillemets simples), " (guillemets doubles), (barres obliques inverses) et nuls seront automatiquement convertis en caractères de débordement contenant des barres obliques inverses.
dans le fichier de configuration php Il y a un booléen paramètre, magic_quotes_runtime. Lorsqu'il est activé, la plupart des fonctions de PHP ajoutent automatiquement des barres obliques inverses pour les caractères de débordement dans les données importées de l'extérieur (y compris les bases de données ou les fichiers) si vous ajoutez une barre oblique inverse au débordement. caractère, il y aura plusieurs barres obliques inverses dans la chaîne, vous devez donc utiliser set_magic_quotes_runtime() et get_magic_quotes_runtime() pour définir et détecter le statut magic_quotes_runtime dans le fichier php.ini afin de garantir que votre programme peut s'exécuter normalement quel que soit le. paramètres du serveur, vous pouvez utiliser get_magic_quotes_runtime pour détecter l'état du paramètre au début du programme afin de déterminer s'il doit être traité manuellement, ou utiliser set_magic_quotes_runtime(0) au début (ou lorsque l'échappement automatique n'est pas requis).
Magic_quotes_gpc définit s'il faut automatiquement ajouter des barres obliques inverses à '" dans les données envoyées par GPC (get, post, cookie). Vous pouvez utiliser get_magic_quotes_gpc() pour détecter les paramètres système. Si ce paramètre n'est pas activé, vous pouvez utiliser la fonction addlashes() pour l'ajouter. Sa fonction est d'ajouter des barres obliques inverses avant certains caractères lorsque cela est requis dans les instructions de requête de base de données. Ces caractères sont les guillemets simples ('), les guillemets doubles ("), les barres obliques inverses () et NUL (caractère NULL).
PS : Obsolète depuis PHP 5.3.0 Et sera être supprimé de PHP 5.4.0. Cette option a été supprimée dans PHP6, et toute la programmation doit être effectuée sous magic_quotes_gpc=Off. Dans un tel environnement, si les données de l'utilisateur ne sont pas échappées, les conséquences ne seront pas seulement le programme. C'est juste une erreur. Cela entraîne également un risque d'attaques par injection de base de données. Donc, à partir de maintenant, ne comptez pas sur ce paramètre pour être activé, de peur que votre serveur doive être mis à jour vers PHP6 et que votre programme ne fonctionne pas correctement < 🎜. >Exemple
php détermine si la fonction get_magic_quotes_gpc est activée, afin que nous puissions décider d'utiliser la fonction addlashes <. 🎜>
La bonne façon d'utiliser get_magic_quotes_gpc() pour empêcher les attaques de base de donnéesLe code est le suivantfunction SQLString($c, $t){ $c=(!get_magic_quotes_gpc())?addslashes($c):$c; switch($t){ case 'text': $c=($c!='')?"'".$c."'":'NULL'; break; case 'search': $c="'%%".$c."%%'"; break; case 'int': $c=($c!='')?intval($c):'0'; break; } return $c; }
<?php function check_input($value) { // 去除斜杠 if (get_magic_quotes_gpc()) { $value = stripslashes($value); } // 如果不是数字则加引号 if (!is_numeric($value)) { $value = “‘” . mysql_real_escape_string($value) . “‘”; } return $value; } $con = mysql_connect(“localhost”, “hello”, “321″); if (!$con) { die(‘Could not connect: ‘ . mysql_error()); } // 进行安全的 SQL $user = check_input($_POST['user']); $pwd = check_input($_POST['pwd']); $sql = “SELECT * FROM users WHERE user=$user AND password=$pwd”; mysql_query($sql); mysql_close($con); ?>
1.
fonction php addlashes(). et stripslashes((). )Explication détaillée des exemples de fonctionsCe 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!