|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Candidat au titre de Membre du Club
![]() Étudiant Inscription : octobre 2011 Messages : 35 ![]() |
Bonjour,
J'ai créé un PHP permettant de saisir et d'afficher des messages, au moyen d'un formulaire (input). Les messages sont enregistrés dans la base de donnée, à l'aide d'une requête d'insertion. Mon problème : Sur PHPMyAdmin, j'ai configuré la colonne dans laquelle mes messages sont enregistrés comme cela : Type : VARCHAR Taille : 1000 L'insertion se déroule correctement tant que je ne met aucune apostrophe (tous les autres caractères ont l'air de passer). A la moindre apostrophe, PHPMyAdmin n'enregistre pas le message dans la base de données. Ma question : A quoi correspond la taille ? Au nombre maxi de caractères ? Que dois-je mettre comme type pour que l'apostrophe ne bloque plus, tout en conservant un nombre intéressant de caractères ? (et si possible en pouvant toujours saisir des chiffres). J'ai consulté de nombreux tutoriels, mais les réponses sont souvent vagues... Merci d'avance. |
|
|
00
|
|
|
#2 |
|
Membre régulier
![]() Abdelilah amezghalDéveloppeur informatique Inscription : février 2006 Messages : 56 ![]() |
Salut,
le 1000 correspond au nombre de caractères effectivement sinon ya un autre type : text si ça coupe des le premier apostrophe, c'est que t'as pas escape ce caractère, au lieu de ' mets \' ou bien regarde coté http://php.net/manual/en/function.addslashes.php |
|
|
00
|
|
|
#3 |
|
Membre Expert
![]() ![]() Sébastien AlfaiateDéveloppeur Web Inscription : janvier 2007 Messages : 1 329 ![]() |
Pour la taille d'un varchar, oui ça correspond au nombre maximum de caractère.
Pour les apostrophes ce n'est pas un problème de type mais un problème d’échappement de caractère qui fait planter ta requête. Par exemple : Code SQL :
INSERT INTO TABLE (champ) VALUES ('texte avec ' une apostrophe') Pour éviter ça et sécuriser ta requete par la meme occasion, tu dois utiliser la fonction mysql_real_escape_string : Code :
mysql_query("INSERT INTO table (champ) VALUES ('".mysql_real_escape_string($variable)."')") Note : mysql_real_escape_string et addslashes vont faire "presque" la même chose mais c'est mysql_real_escape_string qui protégera efficacement ta requête contre les injections SQL
__________________
Zend Certified Engineer PHP 5.3 « Crois-tu comprendre le monde juste en matant le 20H Ou connaître l'histoire en ayant lu que l'angle des vainqueurs ? » Keny Arkana |
|
00
|
|
|
#4 |
|
Candidat au titre de Membre du Club
![]() Étudiant Inscription : octobre 2011 Messages : 35 ![]() |
Tout d'abord, merci d'avoir répondu si vite.
Je ne suis pas bien sûr d'avoir saisi vos deux réponses. @amezghal : Tu ne dis pas à quel endroit je dois mettre \'... Etant très mauvais en anglais, j'ai du mal avec ton lien =/ Est-ce dans le code ou dans le texte que je saisi au moyen du formulaire ? Que permet le type "TEXT" ? Quelle est sa différence avec "VARCHAR" ? @Seb33300 : Je ne crois pas avoir ce genre de problème, juge par toi-même, voici ma requête : $sql = "INSERT INTO messages (texte, nom) VALUES ( '$textes', '$pseudo') " ; Peut être me suis-je mal expliqué : l'insertion est un échec lorsque je met une apostrophe dans le champs de saisie de mon formulaire, pas dans le code. Par exemple, si je souhaite entrer : "Taratis aime les pommes", la requête s'exécute et ma page affiche le message. Maintenant si je tape "J'aime les pommes" dans le champs de saisie du formulaire, la requête n'a pas lieu, la base de donnée reste vide (car "j'aime" contient une apostrophe). |
|
|
00
|
|
|
#5 | ||
|
Membre régulier
![]() Abdelilah amezghalDéveloppeur informatique Inscription : février 2006 Messages : 56 ![]() |
Salut,
essayes ca, figures toi que dans le contenu de ta variable tu risque d'avoir un apostrophe (ce qui est le cas, et donc ça va planter ta requête) donc tu es obligé de protéger tes variables avant. Code php :
sinon voici la version fr de: http://php.net/manual/fr/function.addslashes.php et http://php.net/manual/fr/function.my...ape-string.php je prefere mysql_real_escape_string c'est le plus adapté dans ton cas |
||
|
|
00
|
|
|
#6 |
|
Candidat au titre de Membre du Club
![]() Étudiant Inscription : octobre 2011 Messages : 35 ![]() |
Problème résolu, merci !
mysql_real_escape_string est géniale =) Merci beaucoup à vous deux, pour votre aide précieuse ! Je garde les liens du manuel, je vais potasser. |
|
|
00
|
|
|
#7 |
|
Membre Expert
![]() ![]() Sébastien AlfaiateDéveloppeur Web Inscription : janvier 2007 Messages : 1 329 ![]() |
Lorsque ta variable va être remplacé par sa valeur, le problème que j'ai cité au dessus va se produire si ta variable contient une apostrophe.
__________________
Zend Certified Engineer PHP 5.3 « Crois-tu comprendre le monde juste en matant le 20H Ou connaître l'histoire en ayant lu que l'angle des vainqueurs ? » Keny Arkana |
|
00
|
Copyright © 2000-2012 - www.developpez.com