[PHP/MySQL] Problèmes de ' et "
Résolu/Fermé
roukmouth
Messages postés
26
Date d'inscription
mercredi 13 décembre 2000
Statut
Membre
Dernière intervention
10 mars 2010
-
27 avril 2005 à 10:48
dede - 26 juil. 2009 à 12:41
dede - 26 juil. 2009 à 12:41
A voir également:
- [PHP/MySQL] Problèmes de ' et "
- Easy php - Télécharger - Divers Web & Internet
- Mysql community server - Télécharger - Bases de données
- Get_magic_quotes_gpc php 8 ✓ - Forum PHP
- Error 2002 (hy000): can't connect to local mysql server through socket '/var/lib/mysql/mysql.sock' (2) ✓ - Forum Linux / Unix
- Mysql gratuit ou payant - Forum MySQL
13 réponses
Il y a aussi les fonctions:
htmlspecialchars ("mon texte avec des ", des ', des < ou >, et tout le tsoin tsoin")
combinée avec la fonction mysql_real_escape_string ('encore du texte")
Notez que, si votre texte est entouré de "", il faut mettre un \ devant tous les " dans votre texte (même chose pour les ' si il est entouré de ' ' ). C'est ce qu'on appelle l'échappement (un peu comme les voitures, mais ça pollue moins ^^).
Ça protège non seulement contre la plupart des sources d'erreurs (si pas toutes ^^), et aussi contre le code malicieu (quelqu'un qui essayerai d'introduire du code html dans votre site via un pseudo, une signature, ..., ou faire des requêtes mysql par ce même moyen, du hack quoi ^^).
htmlspecialchars ("mon texte avec des ", des ', des < ou >, et tout le tsoin tsoin")
combinée avec la fonction mysql_real_escape_string ('encore du texte")
Notez que, si votre texte est entouré de "", il faut mettre un \ devant tous les " dans votre texte (même chose pour les ' si il est entouré de ' ' ). C'est ce qu'on appelle l'échappement (un peu comme les voitures, mais ça pollue moins ^^).
Ça protège non seulement contre la plupart des sources d'erreurs (si pas toutes ^^), et aussi contre le code malicieu (quelqu'un qui essayerai d'introduire du code html dans votre site via un pseudo, une signature, ..., ou faire des requêtes mysql par ce même moyen, du hack quoi ^^).
kij_82
Messages postés
4089
Date d'inscription
jeudi 7 avril 2005
Statut
Contributeur
Dernière intervention
30 septembre 2013
857
27 avril 2005 à 15:02
27 avril 2005 à 15:02
ah, oui en effet, et ben pour cette exception du met des petits
addslashes :
$var = addslashes($var);
++
addslashes :
$var = addslashes($var);
++
Luffy =)
Messages postés
365
Date d'inscription
mercredi 20 avril 2005
Statut
Membre
Dernière intervention
19 mai 2006
110
27 avril 2005 à 10:59
27 avril 2005 à 10:59
Salut =)
ben le truc serait peut-être de remplacer les quote ( quote = ' ) par un autre truc avant d'écrire dans ta base et de faire l'inverse en la lisant.
ben le truc serait peut-être de remplacer les quote ( quote = ' ) par un autre truc avant d'écrire dans ta base et de faire l'inverse en la lisant.
roukmouth
Messages postés
26
Date d'inscription
mercredi 13 décembre 2000
Statut
Membre
Dernière intervention
10 mars 2010
2
27 avril 2005 à 11:14
27 avril 2005 à 11:14
J'y ai pensé mais je ne sais pas le faire, alors si tu le sais... Sinon, merci quand même
Luffy =)
Messages postés
365
Date d'inscription
mercredi 20 avril 2005
Statut
Membre
Dernière intervention
19 mai 2006
110
27 avril 2005 à 11:26
27 avril 2005 à 11:26
tu peux le faire avec la fonction
ça ce sera avant l'écriture dans ta base et après lecture avant de l'afficher tu fais l'inverse :
bon tu mets ce que tu veux à la place de "opopop" =) c'était un exemple
++
str_replace("'","opopop",$tavariable);
ça ce sera avant l'écriture dans ta base et après lecture avant de l'afficher tu fais l'inverse :
str_replace("opopop","'",$tavariable);
bon tu mets ce que tu veux à la place de "opopop" =) c'était un exemple
++
roukmouth
Messages postés
26
Date d'inscription
mercredi 13 décembre 2000
Statut
Membre
Dernière intervention
10 mars 2010
2
27 avril 2005 à 11:38
27 avril 2005 à 11:38
Merci beaucoup, j'essaye tout de suite...
Mais, il faut le placer dans un script, non ??
Mais, il faut le placer dans un script, non ??
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Luffy =)
Messages postés
365
Date d'inscription
mercredi 20 avril 2005
Statut
Membre
Dernière intervention
19 mai 2006
110
27 avril 2005 à 12:17
27 avril 2005 à 12:17
Mais, il faut le placer dans un script, non ??
oui oui bien sur :-)
oui oui bien sur :-)
kij_82
Messages postés
4089
Date d'inscription
jeudi 7 avril 2005
Statut
Contributeur
Dernière intervention
30 septembre 2013
857
27 avril 2005 à 14:08
27 avril 2005 à 14:08
Ce n'est pas du tout la peine de remplacer quoi que ce soit : tu peux mettre des ' dans tes infomrmation de la base, et pour les afficher, tu met simplement :
echo "blabla".$var."blabla<BR>";
où $var peut contenir le texte suivant :
j'ai tres fait, mais bon je viens de manger !
Ca te l'affichera correctement, le tout est de ne mettre en permanence que des " " et non ' '.
Et dans les requetes, il te faut mettre :
"SELECT ... WHERE id = '".$machin."' ..."
Toujours ' puis ". la variable et ." puis '
++
echo "blabla".$var."blabla<BR>";
où $var peut contenir le texte suivant :
j'ai tres fait, mais bon je viens de manger !
Ca te l'affichera correctement, le tout est de ne mettre en permanence que des " " et non ' '.
Et dans les requetes, il te faut mettre :
"SELECT ... WHERE id = '".$machin."' ..."
Toujours ' puis ". la variable et ." puis '
++
Luffy =)
Messages postés
365
Date d'inscription
mercredi 20 avril 2005
Statut
Membre
Dernière intervention
19 mai 2006
110
27 avril 2005 à 14:52
27 avril 2005 à 14:52
ben nan, chuis po d(\opopop)accord !!!
parce que dans un champ de type varchar par exemple, tu veux insérer j'ai faim, c'est po ma faute à moi, ta requête sera :
eh ben il va arrêter la valeur au 2è ' trouvé, donc marchera po !!!
parce que dans un champ de type varchar par exemple, tu veux insérer j'ai faim, c'est po ma faute à moi, ta requête sera :
INSERT INTO A_TABLE_TOUT_LE_MONDE VALUES('j'ai faim, c'est po ma faute à moi');
eh ben il va arrêter la valeur au 2è ' trouvé, donc marchera po !!!
Luffy =)
Messages postés
365
Date d'inscription
mercredi 20 avril 2005
Statut
Membre
Dernière intervention
19 mai 2006
110
27 avril 2005 à 15:08
27 avril 2005 à 15:08
je vais être chiant là, mais est-ce que la caractère d'échappement est bien le slash en SQL ?
kij_82
Messages postés
4089
Date d'inscription
jeudi 7 avril 2005
Statut
Contributeur
Dernière intervention
30 septembre 2013
857
27 avril 2005 à 15:12
27 avril 2005 à 15:12
Le pb ne vient pas du SQL mais du php,
Si on enregistre un texte dans lequel aparait des ' ,comme par exemple :
j'ai plus fain.
Il faut fare :
:)
Si on enregistre un texte dans lequel aparait des ' ,comme par exemple :
j'ai plus fain.
Il faut fare :
<?php $texte = "J'ai fain"; $texte = addslashes($texte); $query = "INSERT INTO ... VALUES ('".$texte."',......)"; ?>
:)
Luffy =)
Messages postés
365
Date d'inscription
mercredi 20 avril 2005
Statut
Membre
Dernière intervention
19 mai 2006
110
27 avril 2005 à 15:24
27 avril 2005 à 15:24
ben en fait.... je ne suis pas certain...
parce que dans :
parce que dans :
$query = "INSERT INTO ... VALUES ('".$texte."',......)";ce qui délimite ta chaine ce sont les double quote et non les simple. tu peux mettre autant de ' que tu veux entre " et " en php (enfin il me semble...) ce serait donc bien à SQL que cela poserait problème. enfin bon, Roukmouth, ça marche ou pas ?
kij_82
Messages postés
4089
Date d'inscription
jeudi 7 avril 2005
Statut
Contributeur
Dernière intervention
30 septembre 2013
857
27 avril 2005 à 15:49
27 avril 2005 à 15:49
Bon ben faut savoir... (cf post 7) :DD
Luffy =)
Messages postés
365
Date d'inscription
mercredi 20 avril 2005
Statut
Membre
Dernière intervention
19 mai 2006
110
27 avril 2005 à 15:52
27 avril 2005 à 15:52
ben justement quand je disais eh ben il va arrêter la valeur au 2è ' trouvé, donc marchera po !!!, "il" c'est SQL et non php.
Mais bon, comme dirait l'autre, c'est du détail :-)
Mais bon, comme dirait l'autre, c'est du détail :-)
kij_82
Messages postés
4089
Date d'inscription
jeudi 7 avril 2005
Statut
Contributeur
Dernière intervention
30 septembre 2013
857
27 avril 2005 à 16:00
27 avril 2005 à 16:00
vi c sur !