N-PN White-Hat Project
[Php] Récuperer value d'une checkbox - Version imprimable

+- N-PN White-Hat Project (https://dev.n-pn.fr/forum)
+-- Forum : Programmation (https://dev.n-pn.fr/forum/forumdisplay.php?fid=72)
+--- Forum : Langages interprétés (https://dev.n-pn.fr/forum/forumdisplay.php?fid=27)
+--- Sujet : [Php] Récuperer value d'une checkbox (/showthread.php?tid=2227)



[Php] Récuperer value d'une checkbox - Atlas - 27-09-2012

Bonsoir à tous

J'essaye de créer un livre d'or pour un site web , pour l'instant tout allait bien ...
Mais un problème survient lorsque je décide de créer une checkbox pour que l'utilisateur choisisse si tout le monde peux avoir acmés à son adresse e-mail .

J'arrive à faire en sorte que si "display_mail" = 0 l'adresse mail n'est pas affiché et inversement .
Mais je n'arrive pas à récupérer la valeur de la checkbox pour qu'elle soit égale à 1 si cochée et 0 ( par defaut ) si non cochée .
Voilà mes codes :

Formulaire :
Code :
<form method="post" action="traitement_livre_dor.php">
                <p>
                       <label for="pseudo">Votre pseudo</label> :    <input type="text" name="pseudo" id="pseudo" size="10" maxlength="20" autofocus required />
                    <br />
                       <label for="mail">Votre e-mail :</label> : <input type="email" name="mail" id="mail" size="20" />
                  <br />
                       <label for="display_mail"> Tout le monde peut m'envoyer des mails</label> : <input type="checkbox" name="display_mail" id="display_mail" value="1" />
                  <br />
                   <label for="message"> Message : </label><br />
                   <textarea  rows="3" cols="55" name="message" id="message" required ></textarea>
                   </p>
                   
                   <input type="submit" name="envoyer" value="Envoyer" />
           </form>
traitement :
Code PHP :
// Insertion du message à l'aide d'une requête préparée
$req $bdd->prepare('INSERT INTO livre_dor(pseudo,message,mail,display_mail,date) VALUES(?,?,?,?,NOW())');
$req->execute(array(
                
$_POST['pseudo'],
                
$_POST['message'],
                
$_POST['mail'],
                
$_POST['display_mail']
                 )); 


EDIT : j'ai oublié de préciser l'erreur affichée :
"Notice: Undefined index: display_mail in /opt/lampp/htdocs/test/traitement_livre_dor.php on line 18"


RE: [PHP] Récuperer value d'une checkbox - supersnail - 27-09-2012

Si je me souviens bien, la checkbox renvoie le param value si cochée, et rien sinon (so faut faire une condition pour mettre la bonne valeur)
Sinon gare aux XSS dans ton code (htmlentities est ton amie)


RE: [PHP] Récuperer value d'une checkbox - Atlas - 27-09-2012

tout d'abord merci de ta réponse d'une rapidité impressionnante .
Effectivement mon code fonctionne correctement lorsque je coche la case mais ne fonctionne pas quand je ne la coche pas .
Je vais donc rajouter une condition merci beaucoup .

Pour ce qui est des failles XSS , j'affiche le livre d'or comme ceci :
je pensais que ça serait suffisant .
Code PHP :
    // Récupération des 10 derniers messages
    
$reponse $bdd->query('SELECT * FROM livre_dor ORDER BY ID DESC LIMIT 0, 10');

    
// Affichage de chaque message (toutes les données sont protégées par htmlspecialchars)
    
while ($donnees $reponse->fetch())
    {
        if(
$donnees['mail']!='' && $donnees['display_mail'])
        {
        echo 
'<p><strong><a href="mailto:'htmlspecialchars($donnees['mail']) . '">' htmlspecialchars($donnees['pseudo']) . '</a></strong> (' htmlspecialchars($donnees['date'])  . ') : <br /> ' htmlspecialchars($donnees['message']) . '</p>';
        }
        else
        {
        echo 
'<p><strong>' htmlspecialchars($donnees['pseudo']) . '</strong> (' htmlspecialchars($donnees['date'])  . ') : <br /> ' htmlspecialchars($donnees['message']) . '</p>';
        }
    }

    
$reponse->closeCursor();

?>



RE: [PHP] Récuperer value d'une checkbox - supersnail - 27-09-2012

Effectivement, ça devrait suffir (mais n'ayant pas accès au code d'affichage, je préfère signaler une potentielle faille dans ton code :p).

Sinon, faut remercier ProjectBot pour la rapidité des réponses :> (qui notifie gentiment des nouveaux messages postés :p)


RE: [PHP] Récuperer value d'une checkbox - Atlas - 27-09-2012

Oui , merci d'avoir signaler , je débute en php/mysql donc un peu de mal .

D'ailleurs je vais remplacer htmlspecialchars htmlentities ( merci à toi ) ce qui , il me semble , pourrait empêcher certaines erreurs d'encodage .

Merci beaucoup pour ton aide !

EDIT : Effectivement bien pratique PrjectBot , merci à lui aussi !


RE: [PHP] Récuperer value d'une checkbox - InstinctHack - 28-09-2012

Je pense me souvenir que les cases à cochés créer une variable si coché, sinon la variable n'existe pas, et non vide! voilà toute la différence Smile


RE: [PHP] Récuperer value d'une checkbox - EpicOut - 28-09-2012

(27-09-2012, 20h20)supersnail a écrit : Effectivement, ça devrait suffir (mais n'ayant pas accès au code d'affichage, je préfère signaler une potentielle faille dans ton code :p).

Sinon, faut remercier ProjectBot pour la rapidité des réponses :> (qui notifie gentiment des nouveaux messages postés :p)

Oui mais c'est toi qui a crée le bot donc :>