PHP fournit deux fonctions de référence magiques, magic_quotes_gpc et magic_quotes_runtime, qui nous permettent de citer des données. Si ces deux fonctions sont définies sur ON dans php.ini, elles rencontreront des guillemets simples ", des guillemets doubles " et des barres obliques inverses pour les données que nous citons. la ligne est automatiquement ajoutée avec une barre oblique inverse pour nous aider à traduire automatiquement les symboles et garantir le bon fonctionnement des opérations de données. Cependant, sous différentes versions de PHP ou différentes configurations de serveur, certains magic_quotes_gpc et magic_quotes_runtime sont activés, et d'autres sont activés. .off, donc le programme que nous écrivons doit respecter à la fois les conditions d'activation et de désactivation. Alors, quelle est la différence entre les fonctions magic_quotes_gpc et magic_quotes_runtime Voir la description suivante :
La portée demagic_quotes_gpc
est : serveur client WEB ;
Moment de l'action : La requête démarre, par exemple lors de l'exécution du script.
Magic_quotes_runtime
: données lues à partir d'un fichier ou résultat de l'exécution de exec() ou obtenues à partir d'une requête SQL ;
Temps d'action : chaque fois que le script accède aux données générées dans l'état d'exécution.
Par conséquent, la valeur de paramètre de magic_quotes_gpc affectera les données obtenues via Get/Post/Cookies ; la valeur de paramètre de magic_quotes_runtime affectera les données lues à partir du fichier ou les données obtenues à partir de la requête de base de données.
Exemple :
<form action="" method="post" >
STR :<input type="text" name="str">
<type d'entrée="soumettre">
</formulaire>
<?php
/* Nous remplissons le formulaire : '" Ces symboles, si magic_quotes_gpc n'est pas activé, alors ils ne seront pas échappés par des barres obliques inverses*/
echo 'La valeur transmise via POST est maintenant :' ,$_POST['str'], '<br />';
if (get_magic_quotes_gpc()) { // Vérifiez si magic_quotes_gpc est activé. Sinon, utilisez des ajouts pour convertir. vertueux
$str = $_POST['str'];
} autre {
$str = ajoute deslashes($_POST['str']);
}
echo 'Voici la version échappée :' ,$str, '<hr />';
$sql = "INSÉRER DANS les noms (nom) VALEURS ('$str')"
//============================ = ================================================== = ======
//-----magic_quotes_gpc ne s'échappera que : données www.devdao.com obtenues via Get/Post/Cookies
//-----magic_quotes_runtime s'échappera : données lues à partir d'un fichier ou résultat de l'exécution de exec() ou obtenues à partir d'une requête SQL
//================================================= =====================================
$data = implode(file('try.php')); // Nous y écrivons toujours les caractères '" pour tester
echo 'Voici les données de try.php,';
si (get_magic_quotes_runtime()) {
$données = $données ;
echo 'échappé par le système' .$data;
} autre {
echo 'échappé par addlashes' .$data = addlashes($data);
}
$sql = "INSERT INTO noms (nom) VALEURS ("$data')";
echo '<br />L'instruction SQL est :<br />' ,$sql;
//---Tout est échappé lors de l'entrée dans la base de données, mais il y a des barres obliques inverses supplémentaires. Lorsque nous voulons lire les données originales, utilisez stripslashes() pour supprimer les barres obliques inverses.
//---stripslashes() et addlashes() ont des effets opposés
?>La différence la plus critique réside dans les deux points mentionnés ci-dessus : ils ciblent des objets de traitement différents. La valeur de paramètre de magic_quotes_gpc affectera les données obtenues via Get/Post/Cookies. La valeur de paramètre de magic_quotes_runtime affectera la lecture du fichier. obtenues ou les données obtenues à partir de la requête de base de données sont mentionnées ici : set_magic_quotes_runtime() : Définissez la valeur de magic_quotes_runtime. 0=off. 1=on Vous pouvez utiliser echo phpinfo() ; Vérifiez magic_quotes_runtimeget_magic_quotes_gpc(. ) : Vérifiez la valeur magic_quotes_gpc. 0 = Fermer 1 = Ouvrir get_magic_quotes_runtime () : Vérifiez la valeur magic_quotes_runtime. 0=off. 1=on. Notez qu'il n'y a pas de fonction set_magic_quotes_gpc(), c'est-à-dire que la valeur de magic_quotes_gpc ne peut pas être définie dans le programme.