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 :

Problème avec les quote


Sujet :

Langage PHP

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    284
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 284
    Points : 149
    Points
    149
    Par défaut Problème avec les quote
    Bonsoir,

    J'ai rajouté des addslashes et des stipslashes sur mon site pour qu'il puisse gérer les utilisateur avec des nom comportant des espaces et des quote, seulement j'ai un bug entre deux pages que je n'arrive pas à comprendre, je n'arrive pas à réceptionner la valeur d'un champ d'un formulaire lorsqu'il contient un quote, alors qu'avec les caractères alphanumériques je n'ai aucun soucis, pourtant je compare bien deux nom qui viennent directement de la bdd et qui ont été entrés après un addslashes, voici les morceaux de code:

    Page A

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $groupe_print = $donnees['groupe'];
    ...
    echo "<td class=".$class."><input type='radio' name='attribution".$groupe_print."' value='oui".$id."' id='oui".$id."'/></td>";
    Page B
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $groupe_name = $donnees['groupe'];
    if (isset($_POST['attribution'.$groupe_name]))
    {
    echo "PASSAGE";
    ....
    Ça ne passe par le if que pour les utilisateurs sans quote, pourtant j'ai fait un echo de $groupe_print de la page A et $groupe_name de la page B et j'ai bien la même chose

    Je n'ai pas mit tout le code (car assez long) mais je pense que l'utile est là, si vous avez besoin davantage d'infos n'hésitez pas à me demander.

    Merci !

  2. #2
    Membre éclairé
    Inscrit en
    Juillet 2003
    Messages
    625
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 625
    Points : 673
    Points
    673
    Par défaut
    Bonjour,

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    echo $groupe_name.' '.$_POST['attribution'.$groupe_name];

    te donne quoi ?

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    284
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 284
    Points : 149
    Points
    149
    Par défaut
    J'ai essayé:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo $groupe_name.' et '.$_POST['attribution'.$groupe_name] .'</br>';
    car je suis dans une boucle, et j'obtiens dans un cas concret de deux utilisateurs, un avec quote et un sans quote

    "Synt@xe d\'illustration et"
    "Devine et non"

  4. #4
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    Salut

    Si tu mets du contenu dans un attribut contenant des quotes, il faut encoder les quotes (guillemet, apostrophe en faite) pour éviter qu'ils entrent en conflits, les échapper ne changera rien.

    Pour ça il y a la fonction htmlspecialchars()
    La doc : htmlspecialchars()
    Ne pas oublier de préciser le 2ème paramètres, qui par défaut vaut : ENT_COMPAT qui converti uniquement les guillemets doubles.
    Donc si le contenu peu par exemple tantôt contenir des doubles " tantôt des simple ' alors faut préciser : ENT_QUOTES.

    Faire gaffe à l'encodage aussi, car par défaut c'est de l'ISO.


    A coté de ça, je remarque que ce serait le nom du checkbox qui contiendrait des quotes.
    Pour ma part je déconseillerais de procéder ainsi, car le nom sera la clé du tableau $_POST.
    Vaudrait mieux faire en sorte d'avoir un nom sans aucun caractère spéciaux, et ce serait plutôt la valeur qui contiendrait le contenu en question.

    Pour exemple, le HTML permet de générer des tableau en 2 dimensions si on procède de la sorte :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    echo '<input type="radio" name="attribution['.$id.']" value="'.htmlspecialchars($groupe_name, ENT_QUOTES).'" />';
    Pour obtenir les données envoyé dans l'autre page en POST :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    if (isset($_POST['attribution'])) {
     
        foreach ($_POST['attribution'] as $key => $val) {
            echo 'id : '.$key.' | attribution : '.$val.'<br />';
        }
    }
    Un simple foreach permet de récupérer les checkbox cochés, s'il y en a.

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    284
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 284
    Points : 149
    Points
    149
    Par défaut
    Très pratique l'astuce des tableaux pour les checkbox ! et merci pour les infos sur htmlspecialchars, je pensais que les éviter avec addslashes était suffisant...

    Merci beaucoup !

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

Discussions similaires

  1. Réponses: 8
    Dernier message: 16/11/2014, 10h57
  2. Sudo problème avec les simples quotes
    Par Tronche dans le forum Shell et commandes GNU
    Réponses: 5
    Dernier message: 23/03/2007, 12h02
  3. Réponses: 15
    Dernier message: 21/02/2007, 17h29
  4. Formulaires : problème avec les slashes et les quotes
    Par GarGamel55 dans le forum Langage
    Réponses: 1
    Dernier message: 12/10/2005, 15h59
  5. []Problème avec les formulaires Outlook
    Par davidinfo dans le forum Outlook
    Réponses: 6
    Dernier message: 05/12/2002, 09h59

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