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

Langage PHP Discussion :

comment ne pas couper une variable contenant une apostrophe lors de l'utilisation de $_POST


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    264
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 264
    Points : 94
    Points
    94
    Par défaut comment ne pas couper une variable contenant une apostrophe lors de l'utilisation de $_POST
    Bonjour à tous,


    Voici un premier fichier1.php sur lequel je récupére des donnéees d'1 base de données (fonction questions() )
    fichier1.php

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    $tableau_reponses = questions();
     
    // Je mémorise toutes les données comprises dans $tableau_reponses :
    $question = $tableau_reponses['question'];
    $proposition1 = $tableau_reponses['proposition1'];
    $proposition2 = $tableau_reponses['proposition2'];
    $proposition3 = $tableau_reponses['proposition3'];
    $reponse = $tableau_reponses['reponse'];
    ?>
     
     
    <a href="./index.php">RETOUR PAGE D'ACCUEIL</a> 
           <form method="post" action="quizz2.php">
       <p>	
    	<?php echo $tableau_reponses['question']; ?> <br /><br /><br />
     
           <input type="radio" name="reponse_utilisateur" value='<?php echo $proposition1; ?>' id="proposition1" /><?php echo $tableau_reponses['proposition1']; ?><br /><br />
          <input type="radio" name="reponse_utilisateur" value='<?php echo $proposition2; ?>' id="proposition2" /><?php echo $tableau_reponses['proposition2']; ?><br /><br />
           <input type="radio" name="reponse_utilisateur" value='<?php echo $proposition3; ?>' id="proposition3" /><?php echo $tableau_reponses['proposition3']; ?><br /><br />
     
           <input type="hidden" name="question" value='<?php echo $question; ?>'/>
           <input type="hidden" name="proposition10" value='<?php echo $proposition1; ?>'/>
           <input type="hidden" name="proposition20" value='<?php echo $proposition2; ?>'/>
           <input type="hidden" name="proposition30" value='<?php echo $proposition3;?>'/>
           <input type="hidden" name="reponse" value='<?php echo $reponse; ?>'/>
     
       </p>
    <input type="submit" value="Afficher la réponse" ></code>
    </form>
    Ma variable $question contient une chaine avec une apostrophe. ex Que c'est problématique les apostrophes!
    Cette chaîne s'affiche correctement avec fichier1.php

    Par contre lorsque cette même variable est transmise au fichier2.php, elle est coupée au niveau de l'apostrophe (j'obtiens Que c)
    J'ai essayé plusieurs méthodes et notamment
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo htmlspecialchars($question );
    mais sans résultat.

    Merci à qui pourra m'aider.

    fichier2.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $question = $_POST['question'];
    echo $question;

  2. #2
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    value='<?php echo htmlentities($proposition1, ENT_QUOTES); ?>'
    A+.

  3. #3
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Ou plus simplement, mais uniquement si la valeur de tes champs peut contenir des apostrophes (') et pas de guillemets ("), tu peux encadrer le champ value avec des doubles quotes au lieu des simples quotes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="hidden" name="question" value="<?php echo $question; ?>"/>

  4. #4
    Membre expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 59
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Points : 3 628
    Points
    3 628
    Billets dans le blog
    8
    Par défaut
    Tu utilises la librairie mysql de PHP pour te connecter ?
    Car il me semble que tu n'aurais pas ce problème si tu utilisais la librarie PDO, et des requêtes préparées, qui gèrent proprement toutes les questions d'échappement.

  5. #5
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    @Dendrite
    Que ce soit mysql_* (qui est obsolète), msqli_* ou PDO, tu peux avoir ce problème si tu passes directement les variables dans la requête. Tu dois utiliser une requête préparée dans tous les cas.

    @Cel


    A+.

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    264
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 264
    Points : 94
    Points
    94
    Par défaut
    Bonjour à tous les trois,


    ... et merci pour vos réponses.

    Je viens de tester
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    value='<?php echo htmlentities($proposition1, ENT_QUOTES); ?>'
    et effectivement ça marche. En fait j'avais déjà testé htmlentities mais sans ENT_QUOTES et là ça ne fonctionnait pas.
    Je note aussi la possibilité d'utiliser les doubles quotes au lieu des simples quotes.

    MERCI car je ne sais pas si j'aurais trouvé sans votre aide.


+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 28/10/2015, 18h34
  2. [Débutant] Affecter une variable d'une classe C# à une variable Javascript
    Par SultanGeek dans le forum C#
    Réponses: 0
    Dernier message: 20/06/2015, 20h42
  3. Réponses: 3
    Dernier message: 06/03/2013, 13h00
  4. Requête au sein d'une fonction contenant une variable
    Par hel22 dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 11/07/2007, 13h03
  5. Réponses: 15
    Dernier message: 25/04/2006, 17h59

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