Précédent   Forum des professionnels en informatique > PHP > Langage
Langage Forum sur le langage PHP, la POO, les conventions, la sécurité, etc. Avant de poster : FAQ Langage, toutes les FAQ PHP, cours langage et sources PHP
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 13/12/2010, 17h26   #1
Membre régulier
 
Inscription : octobre 2010
Messages : 252
Détails du profil
Informations forums :
Inscription : octobre 2010
Messages : 252
Points : 92
Points : 92
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 :
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 :
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 !
student_php est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/12/2010, 17h30   #2
Membre chevronné
 
Inscription : juillet 2003
Messages : 625
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 625
Points : 600
Points : 600
Bonjour,

Code php :
echo $groupe_name.' '.$_POST['attribution'.$groupe_name];

te donne quoi ?
__________________
Le savoir est utile que s'il est partagé par tous.
/(bb|[^b]{2})/
!sleep() ? array((string))
syl2095 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/12/2010, 17h37   #3
Membre régulier
 
Inscription : octobre 2010
Messages : 252
Détails du profil
Informations forums :
Inscription : octobre 2010
Messages : 252
Points : 92
Points : 92
J'ai essayé:

Code :
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"
student_php est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/12/2010, 18h42   #4
Expert Confirmé
 
Avatar de RunCodePhp
 
Inscription : janvier 2010
Messages : 2 699
Détails du profil
Informations personnelles :
Localisation : Réunion

Informations forums :
Inscription : janvier 2010
Messages : 2 699
Points : 3 269
Points : 3 269
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 :
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 :
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.
__________________
Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]
RunCodePhp est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 13/12/2010, 20h27   #5
Membre régulier
 
Inscription : octobre 2010
Messages : 252
Détails du profil
Informations forums :
Inscription : octobre 2010
Messages : 252
Points : 92
Points : 92
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 !
student_php est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 00h31.


 
 
 
 
Partenaires

Hébergement Web