IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Problème avec un double quote


Sujet :

PHP & Base de données

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 145
    Points : 61
    Points
    61
    Par défaut Problème avec un double quote
    Bonjour,

    J'ai un problème avec les doubles quotes ".

    Lorsque que je veux inserrer le texte ceci "est un test (quote au milieu de la phrase), il ne m'enregistre dans la base de données que le mot ceci. Il ne m'affiche pas le reste de la phrase c'est à dire est un test.

    J'ai mis une fonction pour pouvoir gerer les simples quotes, mais cela ne passe pas avec les doubles.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $nouveautexte = addslashes($texte);
    Je vous remercie d'avance

  2. #2
    Rédacteur

    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2003
    Messages
    695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2003
    Messages : 695
    Points : 1 071
    Points
    1 071
    Par défaut
    Va nous falloir un peu plus de code.
    Car effectivement, tu applique addslashes, mais si on ne voit pas comment tu utilise $nouveautexte
    Si tu pouvais aussi faire un echo $nouveautexte;
    Articles sur developpez.com
    - Gestion des exceptions avec PHP5
    - Chiffrement et hash en PHP contre l'attaque Man in the middle
    - Aedituus - Espace membre sécurisé en PHP5

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    1 012
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 012
    Points : 1 093
    Points
    1 093
    Par défaut
    j'utilise la fonction quote_smart suivante pour insertion dans une base de données :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    $nouveautexte = quote_smart($texte);
     
     
    function quote_smart($value)
    	{
    	// Protège la variable lors de l'injection dans mysql
    	// Stripslashes
    	if (get_magic_quotes_gpc()) $value = stripslashes($value);
    	// Protection si ce n'est pas une valeur numérique ou une chaîne numérique
    	if (!is_numeric($value)) $value = "'" . mysql_real_escape_string($value) . "'";
    	return $value;
    	}

  4. #4
    Rédacteur

    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2003
    Messages
    695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2003
    Messages : 695
    Points : 1 071
    Points
    1 071
    Par défaut
    Oui, c'est une bonne fonction, meiux que addslashes.

    Par contre, attention,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (!is_numeric($value)) $value = "'" . mysql_real_escape_string($value) . "'";
    si on a $value qui est un nombre sous forme de string (genre $value = '123456789') et que l'enregistrement sous mysql est prévu en varchar, ça va bloquer car tu n'aura pas mis les single quotes ici
    Articles sur developpez.com
    - Gestion des exceptions avec PHP5
    - Chiffrement et hash en PHP contre l'attaque Man in the middle
    - Aedituus - Espace membre sécurisé en PHP5

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    1 012
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 012
    Points : 1 093
    Points
    1 093
    Par défaut
    je ne suis pas sûr d'avoir bien compris ce que tu veux dire

    mais, si value est un nombre sous forme de string du genre $value = '123456';, php le considère comme is_numeric (je viens de fairre le test)

  6. #6
    Membre confirmé Avatar de mathieugamin
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    572
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 572
    Points : 627
    Points
    627
    Par défaut
    PHP oui, mais mysql ne va pas l'interpréter de la même manière...la chaîne numérique ne sera pas échappée comme une chaîne, mais comme un entier.
    GAMIN !!!!
    _______________________________________________
    PHP 5.2 | Apache 2 | MySQL 5 | WinXP Pro | Mac OSX

  7. #7
    Rédacteur

    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2003
    Messages
    695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2003
    Messages : 695
    Points : 1 071
    Points
    1 071
    Par défaut
    $value = '123456';, php le considère comme is_numeric (je viens de fairre le test)
    yep, et donc

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (!is_numeric($value)) $value = "'" . mysql_real_escape_string($value) . "'";
    va nous donner au final une requete
    Or, même si on a un nombre, j'ai décidé, juste pour emm...er le monde, que ce champ sous MySQL était en varchar.
    Tu auras ici une erreur de la part de MySQL car il attend

    En fait, même pour des nombres, tu peux mettre les ' dans une requete MySQL, donc inutile de tester en PHP
    Articles sur developpez.com
    - Gestion des exceptions avec PHP5
    - Chiffrement et hash en PHP contre l'attaque Man in the middle
    - Aedituus - Espace membre sécurisé en PHP5

  8. #8
    Membre confirmé Avatar de mathieugamin
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    572
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 572
    Points : 627
    Points
    627
    Par défaut
    Après vérification, c'est vrai, ça marche même en varchar...
    Pas de blocage...
    Sorry pour le post précédent...

    En fait j'ai essayé en échappant la variable et sans l'échapper, et ce avec un champ VARCHAR, et mon UPDATE table fonctionne correctement...

    Question de config? I don't know...
    GAMIN !!!!
    _______________________________________________
    PHP 5.2 | Apache 2 | MySQL 5 | WinXP Pro | Mac OSX

Discussions similaires

  1. [Shell] Problème avec le Back-quote (ksh)
    Par bob94700 dans le forum Linux
    Réponses: 3
    Dernier message: 27/01/2008, 13h45
  2. problème avec les doubles
    Par mahi31 dans le forum Langage
    Réponses: 1
    Dernier message: 27/04/2007, 16h37
  3. Debugger - problème avec les "double"
    Par Dev_Michael dans le forum C++Builder
    Réponses: 15
    Dernier message: 28/03/2007, 12h15
  4. Sudo problème avec les simples quotes
    Par Tronche dans le forum Shell et commandes GNU
    Réponses: 5
    Dernier message: 23/03/2007, 13h02
  5. [MySQL] Problème avec une double insertion
    Par warmup27 dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 21/10/2006, 00h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo