La communauté ALL HTML c'est 58881 membres à ce jour dont 1 inscrits aujourd'hui et 31 depuis une semaine.

Communauté ALL HTML : telnes

Envoyer un formulaire en php

Cet article est actuellement publié sur le site.

Photo de telnes Article publié le lundi 09 octobre 2006 par telnes.
Cet article est classé dans les catégories « Internet et Intranet, PHP »

Ce tutorial va permetre de comprendre comment envoyer les champs d'un formulaire avec la fonction mail() de PHP.



Exemple de formulaire



si vous n'êtes pas famillié jeté un oeil à la publication http://www.allhtml.com/articles/detail/606

nous appellerons cette page formulaire.html

<form method="POST" action="inscription.php" name="monform"> Nom : <input type="text" name="nom"><br /> Prenom : <input type="text" name="prenom"><br /> Mail : <input type="text" name="mail"><br /> <textarea name="commentaire">Entrer ici votre message</textarea> <input type="submit" value="Envoyer"> </form>

On a donc un formulaire composé de 4 champs : nom,prenom,mail et commentaire.
La balise form contient l'attribut method qui permet de stipuler la méthode d'envoi des informations, il y a GET (en paramètre URL) ou POST (en paramètre dans le header de la page).
Nous choisissons POST car il y a aucun interrêt à faire passer les variables via l'url !
L'attribut action permet de stipuler l'action à réaliser, ici nous envoyons le formulaire à la page inscription.php

Il est tout à fait possible de valider une première fois les champs en JavaScript mais c'est pas le sujet ici!

La page PHP qui traite le formulaire



La page PHP va récupérer les variables qui lui ont été envoyé (par la méthode POST) donc pour les récupérer il faut passer par la variable $_POST[''], une fois qu'on a compris ca on a fait 80 % du chemin :)
<?php // récupération des variables // donné un autre nom au variable pour évité les problèmes avec Register Global à ON $formMail = $_POST['mail']; $formNom = $_POST['nom']; $formPrenom = $_POST['prenom']; $formCommentaire = $_POST['commentaire']; // pour éviter des erreurs de Notice dans le cas ou le champs est resté vide, on aurait pu mettre ! // $formMail = (!isset($_POST['mail']))?$_POST['mail']:'none'; // Dans le cas ou les variables sont destiné à allimenter un base de donné il faut toujours valider les valeurs pour éviter les problèmes d'injection ! cf Google //En règle général on traite les variables avec les fonctions htmlentities, mysql_escape_string(),addslash() ... // Dans l'exemple on va juste vérifier que le nom, le prenom et le mail soit pas vide. if(!empty($formMail) && !empty($formPrenom) && !empty($formNom) ){ //ok pas vide //on convertie les caractètres HTML du commentaire $formCommentaire = htmlentities($formCommentaire); //mise en forme du mail $message = "$formNom $formPrenom vous contact via votre formulaire.\n \n message : \n $formCommentaire"; // on envois le mail [url=http://fr.php.net/manual/fr/ref.mail.php]http://fr.php.net/manual/fr/ref.mail.php[/url] // bool mail ( string to, string subject, string message [, string additional_headers [, string additional_parameters]] ) // ATTENTION en général vous n'avez pas de serveur de mail sur votre machine ! // à tester sur le net directment en cas de problème avec la fonction mail if( mail('monadresse@mail.com','sujet','$message') ){ echo 'les informations on bien été envoyé!'; } else{ echo 'une erreur est survenu lors de l\'envoi du message'; } } else{ //il y a des champs vide echo 'merci de remplir les champs nom, prenom et mail'; } ?>


Les trucs en plus



Conserver les variables des utilisateurs pour ne pas les perdre en cas de retour en arrière dans le formulaire. Pour cela vous pouvez utiliser les sessions (http://fr.php.net/manual/fr/ref.session.php) pour stocker les variables à leurs receptions. Ensuite on utiliser l'attribut value dans les input du formulaire (dans une page php !).
exemple: <input type="text" value="<?php $_SESION['mavar'] ?>" name="mavar">


Pour rediriger une fois le mail envoyé vous pouvez utiliser la fonction header() (http://fr.php.net/manual/fr/function.header.php). On peut tres bien ajouter des paramètre dans l'url de redirection !

Plus d'informations sur :

ACCÉS COMMUNAUTÉ

Rejoignez ALL HTML

Publiez vos articles, actualités, communiqués ... Donnez votre avis, partagez votre réseau, rencontrez d'autres membres et participez à la vie de la communauté.