Maison  >  Article  >  développement back-end  >  Comment insérer dans la base de données et effectuer une opération d'échappement en php

Comment insérer dans la base de données et effectuer une opération d'échappement en php

藏色散人
藏色散人original
2021-10-14 09:11:233089parcourir

Comment insérer une base de données et effectuer une opération d'échappement en PHP : 1. Définissez l'élément magic_quotes_gpc ; 2. Activez l'élément magic_quotes_runtime 3. Activez l'élément magic_quotes_sybase pour réaliser automatiquement l'échappement.

Comment insérer dans la base de données et effectuer une opération d'échappement en php

L'environnement d'exploitation de cet article : système Windows 7, PHP version 7.1, ordinateur DELL G3

Comment php s'insère-t-il dans la base de données et effectue-t-il les opérations d'échappement ?

php Traitement spécial des chaînes lors de l'écriture dans la base de données (quand échapper aux caractères spéciaux)

Lors du traitement des données MySQL et GET et POST, il est souvent nécessaire d'échapper aux guillemets des données.

Il existe trois paramètres en PHP qui peuvent convertir automatiquement les caractères '(guillemet simple), "(guillemet double), (barre oblique inverse) et NULL.

PHP appelle cela des guillemets magiques. Ces trois paramètres sont

magic_quotes_gpc

Affecte les données de requête HTTP (GET, POST et COOKIE). Elle ne peut pas être modifiée au moment de l'exécution. La valeur par défaut en PHP est activée

Lorsque cette option est activée, les données transmises via GET, POST et COOKIE seront automatiquement modifiées.

Par exemple, test.php?id=abc'de"f

echo $_GET['id']; # Vous obtiendrez abc'de"f

magic_quotes_gpc=On; n'a aucun effet. Par exemple, lorsque le $_GET['id'] ci-dessus est écrit dans la base de données, il est toujours abc'de"f,

Au contraire, si magic_quotes_gpc=Off; alors les caractères doivent avoir des guillemets ( indépendamment des guillemets simples ou des guillemets doubles), l'écrire directement dans MySQL deviendra directement vide

Cependant, si vous l'écrivez dans le document au lieu de MySQL. Ensuite, ce sera abc'de"f

magic_quotes_runtime

S'il est activé, la plupart des fonctions qui récupèrent des données à partir de sources externes et les renvoient, y compris à partir de bases de données et de fichiers texte, les données renvoyées seront converties en définition par barre oblique inverse. Cette option peut être modifiée au moment de l'exécution. La valeur par défaut en PHP est désactivée

magic_quotes_sybase

Si elle est activée, les guillemets simples seront échappés au lieu des barres obliques inverses. Remplaceront complètement magic_quotes_gpc. sera échappé. Les guillemets doubles, les barres obliques inverses et les caractères NULL ne seront pas échappés.

我表单内容本来是:<img alt=”" width=”400″ height=”300″ src=”/Upfiles/201105/images/1306657040.jpg” />
<img alt=\”\” width=\”400\” height=\”300\” src=\”/Upfiles/201105/images/1306657040.jpg\” />

Contre-mesure 1 : Modifier le fichier php.ini (je n'entrerai pas dans la méthode de modification de php.ini, vous pouvez le rechercher sur Google)

Contre-mesure 2 : Annuler l'échappement

Étape 1 : Recherchez le fichier que vous avez soumis Des données telles que $_POST['content'], remplacez-les par $content=stripslashes($_POST['content']);

Étape 2 : À l'avenir, remplacez $POST['content'] par $ content

Étape 3 : Soumettez à la base de données, le stockage de la base de données est toujours normal : 710659b3d15cdb58e65c22bd9784326c(Vous devriez savoir comment résoudre ce problème, n'est-ce pas ? ? Et si je le répétais)

Étape 4 : Utilisez stripslashes() pour filtrer le contenu lu dans la base de données.

stripslashes() Cette fonction supprime les barres obliques inverses ajoutées par la fonction addlashes(). Utilisé pour nettoyer les données récupérées de la base de données ou du formulaire HTML

(

Si vous ne souhaitez pas que la situation suivante se produise dans la page PHP :

Les guillemets simples sont échappés comme '

Les guillemets doubles sont échappés comme "

Ensuite, vous pouvez effectuer les réglages suivants pour éviter :

Définissez magic_quotes_gpc = Off dans php.ini)

Résumé comme suit :

1. Dans le cas de magic_quotes_gpc=on,

Nous ne pouvons pas faire

sur le données de chaîne des bases de données d'entrée et de sortie

Dans les opérations de addlashes() et stripslashes(), les données seront affichées normalement

Si vous effectuez addlashes() sur les données d'entrée à ce moment,

alors vous devez utiliser. stripslashes() pour supprimer l'excédent lors de la sortie.

2. Dans le cas de magic_quotes_gpc=off

doit utiliser addlashes() pour traiter les données d'entrée, mais il n'est pas nécessaire d'utiliser stripslashes() pour formater la sortie.

parce que addlashes() ne convertit pas la barre oblique inverse. L'écriture conjointe dans la base de données aide uniquement MySQL à terminer l'exécution des instructions SQL

Texte intégral : http://blog.csdn.net/qinglianluan/article/details/26272689.

introduction à l'utilisation de la fonction php get_magic_quotes_gpc()

http://www.php100.com/html/php/hanshu/2013/0905/4689.html //Cela peut être compris de cette façon : cette fonction consiste à déterminer si le la fonction "Échapper aux caractères spéciaux" du serveur est activée

addslashes()

Texte intégral : http://php.net/manual/zh/function.addslashes.php //Cette fonction échappe les caractères spéciaux en caractères ordinaires

.

Apprentissage recommandé : "Tutoriel vidéo PHP"

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