[PHP] Réception de données des formulaires
2 août 2008 à 18:26, par ChristopheSalut,
Voilà, c’est maintenant que je vais vous donner la solution pour recevoir des données provenant d’un formulaire.
C’est très simple, le plus dur dans cette histoire, c’est de ne pas laisser des failles XSS.
Prenons ce formulaire en exemple :
<form action="traitement.php" method="post"> Nom : <input type="text" name="nom" /><br /> Prénom : <input type="text" name="prenom" /><br /><br /> Recevoir newsletter : <input type="radio" name="newsletter" value="oui" checked="checked" /> Oui <input type="radio" name="newsletter" value="non" /> Non<br /><br /> Votre couleur préférée : <select name="couleur"> <option value="rouge">Rouge</option> <option value="bleu">Bleu</option> <option value="vert">Vert</option> <option value="noir">Noir</option> <option value="blanc">Blanc</option> <option value="autre">Autre...</option> </select><br /><br /> Commentaires :<br /> <textarea name="commentaires" cols="50" rows="6"></textarea><br /><br /> <input type="submit" value="Envoyer" name="formulaire" /> </form> |
Voilà, maintenant, passons à la page traitement.php qui reçoit les données du formulaire :
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 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 | <?php // TRAITEMENT DES INFORMATIONS PROVENANTS DU FORMULAIRE if( isset($_POST['formulaire']) ){ // Si le formulaire à été envoyé // Nom $nom = stripslashes(htmlentities($_POST['nom'])); // Prénom $prenom = stripslashes(htmlentities($_POST['prenom'])); // Recevoir newsletter $newsletter = stripslashes(htmlentities($_POST['newsletter'])); if( $newsletter != 'oui' || $newsletter != 'non' ){ $newsletter = 'non'; } // Couleur préférée $couleur = stripslashes(htmlentities($_POST['couleur'])); switch($couleur) { case 'rouge': $couleur = 'rouge'; break; case 'bleu': $couleur = 'bleu'; break; case 'vert': $couleur = 'vert'; break; case 'noir': $couleur = 'noir'; break; case 'blanc': $couleur = 'blanc'; break; case 'autre': $couleur = 'autre'; break; default: $couleur = 'autre'; break; } // Commentaires $commentaires = nl2br(stripslashes(htmlentities(utf8_decode($_POST['commentaires'])))); // On affiche le résultat : ?> Votre Nom : <b><?php echo $nom; ?></b><br /> Votre Prénom : <b><?php echo $prenom; ?></b><br /> Recevoir la Newsletter ? : <b><?php echo ucfirst($newsletter); ?></b><br /> Votre couleur préférée : <b><?php echo ucfirst($couleur); ?></b><br /><br /> Vos commentaires :<br /> <b><?php echo $commentaires; ?></b> <?php } else { echo 'Erreur: <a href="./formulaire.html">cliquez ici</a>.'; } ?> |
Mais à qui servent toutes ces fonctions ? consultation de la documentation PHP :
stripslashes, htmlentities, nl2br, ucfirst.
Et aussi !
dans la balise form, il y a method="post", vous pouvez mettre get à la place, mais dans le fichier de traitement, ça ne sera plus
$_POST[...]; |
mais
$_GET[...]; |
![]()
Mais c’est quoi la différence entre les deux ? c’est tout simplement que GET met les variables dans l’URL contrairement à POST, vous ne devez en aucun cas utiliser GET pour des données sensibles comme un mot de passe etc… !
Voilà voilà !