Voir aussi
Dans la même rubrique :
Quiz en PHP 1/3
Quiz en PHP 2/3
Quiz en PHP 3/3
Page contact en PHP 3/3
Installer un script PHP pour les nuls
Page contact en PHP 1/3
Menu de navigation sans JavaScript
Gestion d’une rubrique... en attendant SPIP
Créer un forum à l’aide de phpBB
Page Erreur 404 en PHPDu même auteur :
Suivi de vos articles
Exécuter un Javascript dans une page SPIP
Reprendre un document Word
Les Centres de santé
Comité Départemental d’Education pour la Santé des Yvelines
Les sites des Médecins Maîtres-Toile
Joindre un document à un article
Placer une image dans un article
Les raccourcis typographiques
Ecrire ou modifier un article
Présentation de l’espace rédacteurs
Conseils aux rédacteurs
Lire nos fichiers de syndication
Syndication, comment s’y retrouver
Afficher plusieurs flux RSS/Atom sur une page
Lecture des caractères spéciaux et d’éléments d’un fil RSS/Atom
Accueil du nouveau rédacteur
Javascript : n’oubliez pas Mac OS !
Page contact en PHP 2/3
Positionnement fixe... même avec Internet Explorer !
Des fils RSS 1.0, RSS 2.0 et Atom 1.0 pour votre site SPIP
Editez vos flux avec Fil_LE 1/2
Editez vos flux avec Fil_LE 2/2
Editer plusieurs fichiers de syndication 1/3
Editer plusieurs fichiers de syndication 2/3
Editer plusieurs fichiers de syndication 3/3
Documentation sur SPIP
Abandonnons RSS 0.91 !
La syndication de contenu RSS
Ecrire ce qu’on veut dans SPIP
Utiliser les smileys
Joindre un logo à un article
Référencer un site
Création à distance d’un fichier de syndication
Lecteur RSS/Atom pour votre site 1/2
Lecteur RSS/Atom pour votre site 2/2
Quand JavaScript est désactivé... 2/2
Afficher un fil RSS/Atom sur votre site 1/3
Afficher un fil RSS/Atom sur votre site 2/3
Afficher un fil RSS/Atom sur votre site 3/3
Un Editeur RSS pour votre site 1/2
Un Editeur RSS pour votre site 2/2
Un lecteur RSS pour votre site 1/2
Un lecteur RSS pour votre site 2/2
Menu dépliant pour les rubriques
Quand JavaScript est désactivé... 1/2
Astuce pour les images fréquemment utilisées
Utilisation de la classe easyRSS
Proposer plusieurs styles pour votre siteMême indexation :
Technique Web
xhtml - 4 : Les entités
Qualité, centres d’intérêt et motivations des participants aux forums médicaux.
Réaliser un formulaire de contact (5/4)
Gestion d’une rubrique... en attendant SPIP
Initiation au xhtml - 3 : Rappel sur les pointeurs internet (URI/URL)
Réaliser un formulaire de contact (1/4)
Un Editeur RSS pour votre site 1/2
Utilisation de la classe easyRSS
Un Editeur RSS pour votre site 2/2
Analyser les réponses à une liste de questions
Un lecteur RSS pour votre site 1/2
Syndication, comment s’y retrouver
Page contact en PHP 3/3
MARST - Le Moteur Automatisé de Recherche en Santé au Travail
Javascript : n’oubliez pas Mac OS !
Conseils pour débuter un site web
Initiation au xhtml - 1
Contrôler l’accès d’une partie du site avec .htaccess
Réaliser un formulaire de contact (3/4)
Positionnement fixe... même avec Internet Explorer !
Menu de navigation sans JavaScript
Un serveur dédié pour les nuls
Soigner en ligne, un art impossible ?
Editer plusieurs fichiers de syndication 1/3
Quand JavaScript est désactivé... 1/2
Menu dépliant pour les rubriques
Un lecteur RSS pour votre site 2/2
Page contact en PHP 1/3
La Netiquette des forums
Créer un forum à l’aide de phpBB
Quiz en PHP 2/3
Comment intégrer Snap Shots à Rapidweaver ?
Comment faire migrer son site ?
Publication Spip : forme et typographie
Proposer plusieurs styles pour votre site
Page Erreur 404 en PHP
Mise en place d’un forum : une décision qui doit être mûrement réfléchie
Réaliser un formulaire de contact (4/4)
Tri et Histogramme
Quand JavaScript est désactivé... 2/2
Le web structuré et sa présentation
Editer plusieurs fichiers de syndication 3/3
Quiz en PHP 3/3
Quiz en PHP 1/3
Etablir un questionnaire statistique en ligne
Belles icônes pas chères !
Initiation au xhtml - 2
Installer un script PHP pour les nuls
Créer une liste de QCM
Editer plusieurs fichiers de syndication 2/3
Réaliser un formulaire de contact (2/4)
La syndication de contenu RSS
Lire nos fichiers de syndication
Ecrire ce qu’on veut dans SPIP
Afficher un fil RSS/Atom sur votre site 1/3
Astuce pour les images fréquemment utilisées
Afficher un fil RSS/Atom sur votre site 2/3
Afficher un fil RSS/Atom sur votre site 3/3
Lecteur RSS/Atom pour votre site 1/2
Lecteur RSS/Atom pour votre site 2/2
Lecture des caractères spéciaux et d’éléments d’un fil RSS/Atom
Syndication pour phpBB
Editez vos flux avec Fil_LE 1/2
Editez vos flux avec Fil_LE 2/2
Création à distance d’un fichier de syndication
Exécuter un Javascript dans une page SPIP
Abandonnons RSS 0.91 !
Des fils RSS 1.0, RSS 2.0 et Atom 1.0 pour votre site SPIPSyndiquer tout le texte
Menu dépliant pour les rubriques
Page Erreur 404 en PHP
Editer plusieurs fichiers de syndication 1/3
Quiz en PHP 2/3
Installer un script PHP pour les nuls
Menu de navigation sans JavaScript
Quand JavaScript est désactivé... 1/2
Editer plusieurs fichiers de syndication 2/3
Gestion d’une rubrique... en attendant SPIP
Positionnement fixe... même avec Internet Explorer !
Quiz en PHP 1/3
Quiz en PHP 3/3
Page contact en PHP 3/3
Page contact en PHP 1/3
Quand JavaScript est désactivé... 2/2
Proposer plusieurs styles pour votre site
Javascript : n’oubliez pas Mac OS !
Syndication, comment s’y retrouver
Editer plusieurs fichiers de syndication 3/3
Afficher plusieurs flux RSS/Atom sur une page
Conseils aux rédacteurs
La syndication de contenu RSS
Ecrire ce qu’on veut dans SPIP
Lire nos fichiers de syndication
Présentation de l’espace rédacteurs
Afficher un fil RSS/Atom sur votre site 1/3
Ecrire ou modifier un article
Astuce pour les images fréquemment utilisées
Afficher un fil RSS/Atom sur votre site 2/3
Les raccourcis typographiques
Afficher un fil RSS/Atom sur votre site 3/3
Reprendre un document Word
Lecteur RSS/Atom pour votre site 1/2
Lecteur RSS/Atom pour votre site 2/2
Lecture des caractères spéciaux et d’éléments d’un fil RSS/Atom
Placer une image dans un article
Editez vos flux avec Fil_LE 1/2
Joindre un document à un article
Joindre un logo à un article
Editez vos flux avec Fil_LE 2/2
Création à distance d’un fichier de syndication
Exécuter un Javascript dans une page SPIP
Abandonnons RSS 0.91 !
Des fils RSS 1.0, RSS 2.0 et Atom 1.0 pour votre site SPIP
Accueil
Boite à Outils
Scripts PHP
Page contact en PHP 2/3

Comment ajouter par exemple un champ "Téléphone" ou un champ "Sujet du message" :
Il faut ajouter ce ou ces champ(s) à la déclaration du formulaire :
function formulaire($Nom="",$Profession="",$Email="",$Telephone="",$Sujet="",$Message="") { |
et les ajouter dans le formulaire, avec 2 nouvelles lignes à insérer dans le tableau :
<tr class="unite"> |
Pour éviter le Cross Site Scripting [2], la fonction htmlentities() bloque les failles de sécurité, elle est remplacée par une autre fonction pour le "Sujet du message" afin de ne pas gêner l’affichage de caractères accentués.
Il faut aussi ajouter dans la préparation du mail les lignes :
$vTelephone=trim(htmlentities($_POST["Telephone"])); |
Enfin, après la ligne :
echo "<li>E-mail : <span class='red'>" . $vEmail. "</span></li>"; |
il faut ajouter :
echo '<li>Téléphone : <span class="red">' . $vTelephone. "</span></li>\n"; |
Par exemple, vous souhaitez que le visiteur indique le motif de son message en choisissant :
On reprend la déclaration du formulaire et on ajoute la nouvelle variable :
function formulaire($Nom="",$Profession="",$Email="",$Motif="",$Message="") { |
et on ajoute dans le formulaire une nouvelle ligne (à insérer dans le tableau) :
<tr class="unite"> |
Après envoi du formulaire, ce script reconnaît le bouton choisi et indique à côté
'selected="true"' il s’affichera donc sélectionné.
Il faut aussi ajouter dans la préparation du mail les lignes :
$vMotif=trim(htmlentities($_POST["Motif"])); |
La particularité concernant le motif "Problème technique" est l’envoi par le formulaire de la valeur "technique" afin d’éviter les caractères accentués et espaces qui peuvent donner des erreurs. Ce script reconstitue l’écriture complète avant l’envoi du message.
L’intérêt peut être de demander de choisir dans la liste du menu. Voici par exemple un formulaire d’inscription demandant de choisir entre 3 dates possibles :
On reprend la déclaration du formulaire et on ajoute la nouvelle variable :
function formulaire($Nom="",$Profession="",$Email="",$Date="",$Message="") { |
et on ajoute dans le formulaire une nouvelle ligne (à insérer dans le tableau) :
<tr class="unite"> |
A la réception du formulaire, le script reconnaît la date choisie et indique à côté
'selected="selected"' ce qui permettra de l’afficher.
Pour que le mail indique ce choix, il faut ajouter :
$vDate = htmlentities($_POST["Date"]); |
Contrairement aux boutons radio, plusieurs choix sont possibles avec les cases à cocher. Le principe est presque le même que pour les boutons radio.
On est là un peu loin d’une page contact, mais un tel formulaire est parfois nécessaire. Par exemple, sur la page Lecteur RSS, pour voir les fichiers de syndication des MMT j’utilise les cases à cocher pour permettre de choisir les meilleures options d’affichage des fichiers de syndication.
Voici un exemple de lignes à ajouter pour le formulaire :
<tr class="unite"> |
Après envoi du formulaire, le script reconnaît les cases cochées (if ($_POST["Choix"]==1) signifie la même chose que "si $Choix a pour valeur 1") et affiche à côté
'checked="checked"' pour cocher les cases.
Pour indiquer ces choix dans le mail il faut ajouter :
$message.= "Choix : "; |
Et pour que visiteur voit le message envoyé, on note :
echo "<li>Choix : <span class='red'>" . $vChoix. "</span></li>"; |
Une démonstration de cette adaptation est disponible ici, son code peut être vu et copié ici.
Si on veut rendre un nouveau champ obligatoire, il suffit pour cela de modifier le script en ajoutant dans :
if (empty($vNom) || empty($Message) || empty($Email)) { |
les nouveaux éléments obligatoires :
if (empty($vNom) || empty($Message) || empty($Email) || empty($Telephone) || empty($Sujet)) { |
Dans cet exemple, c’est "Téléphone" et "Sujet" que l’on a rendus obligatoires (les exemples de nouveaux champs text). On peut aussi rendre obligatoire un choix par bouton radio ou menu déroulant en ajoutant les variables correspondantes ($Motif ou $Date dans nos exemples). Les cases permettant des choix multiples ne doivent pas être rendues obligatoires.
[1] Cet article publié le 11/12/05 a été modifié le 18/04/06 sur l’utilisation des cases à cocher.
[2] Voir Page contact en PHP 1/3.
Bonjour,
Tout d’abord, merci pour vos travaux, ils me sont très utiles. J’ai utilisé ce script pour faire une page contact, il fonctionne très bien.
J’essaie de le personnaliser un peu et j’ai rencontré un problème : Je voudrais que le mail ne soit pas obligatoire. Ca j’ai réussi. Par contre, il ne le teste plus.
En résumé, ma question : est-il possible de tester une variable sans qu’elle soit obligatoire ?
J’ai essayé de mettre un "if (isset...)" avant le test mais j’ai pas su le faire fonctionner. Je voulais lui dire : "si le mail est renseigné, teste le. Sinon, teste pas"
J’ai pas réussi 
Merci.
Finalement je pense avoir trouvé : je rajoute : &&($vmail !="")
dans la ligne de test. Ca semble fonctionner 
Du coup j’ai une autre question concernant la sécurité. Si j’ai bien tout suivi, en utilisant :
"value="
<?php if (ereg("[]%~#`$&|}{^[><]",$mail))
{ echo "Certains caractères utilisés sont interdits";
$erreur=1; }
else {echo trim($mail); }?>
on peut se passer du htmlentities en toute sécurité, c’est ça ? Du coup, on arrive à faire passer les accents mais pas les morceaux de codes malvaillants. Ca suffit pour se protégér ?
Merci.
name
Il faut pour cela utiliser les cases à cocher qui acceptent plusieurs choix et non les boutons radio où un seul choix est possible.
Je vais effacer prochainement cet échange qui alourdit cette page sans rien apporter. Une autre fois indiquez votre adresse mail cela permet de vous répondre sans charger cette page.
Bonjour, J’utilise votre script avec des checkbox, mais je n’arrive pas à afficher plusieurs réponses dans mon mail.
Comme vous l’indiquait un lecteur, lorsque l’on coche "renseignement" et "inscription" avec des checkbox, il n’y a que "inscription" qui apparaîtra sur le mail.
Je souhaiterai faire apparaître les 2. Comment faire ?
Bonsoir Tout d’abord, félicitation et merci pour le travail que vous fournissez. Personnellement, n’étant pas un expert du php, j’ai un problème lorsque je rajoute un choix par case à cocher. Où exactement dois je ajouter :
$message.="Votre choix : " ; if ($1) $message.= "- Choix 1\n" ; if ($2) $message.= "- Choix 2\n" ; if ($3) $message.= "- Choix 3\n" ; if ($4) $message.= "- Choix 4\n" ;
Toutes mes tentatives se sont soldées par des échecs. Merci de m’aiguiller si cela vous est possible.
J’ai complètement repris cette partie de l’article pour être beaucoup plus précis, avec aussi une page de démonstration et une pour voir le code.
Votre message et celui-ci seront effacés dans quelques jours puisque maintenant les éléments sont dans l’article.
Dans le script proposé chaque champ est contrôlé par une expression rationnelle pour éliminer les messages qui contiendraient des caractères interdits, ceci pour empêcher le détournement du formulaire.
Ceci n’explique pas la faille de sécurité dont vous avez été victime, car tel que le script est fait, je ne vois pas comment c’est possible, à moins que vous l’ayez modifié...
D’abord un GRAND merci pour toutes ces pages. Vous mettez à disposition de nous tous vos connaissances et cela est une forme moderne d’instruction qui s’adapte naturellement au niveau et à la rapidité de chacun. Mieux que l’Éductation Nationale, puisque nous allons à notre rytme et il n’y a pas de note. Ca fonctionne ou ca ne fonctionne pas. Si on n’a pas compris, ce n’est pas grave, on revoi l’explication.
J’ai commencer à apprendre xhtml/css sur le siteduzero.com. Ce site est une très bonne introduction et même plus encore. Il reste généraliste et ne s’intèresse pas aux cas spécifiques. Votre site est, pour moi, une suite logique au siteduzero.com. Je viens juste de le découvrir un peu par hasard.
Note : Il serait intéressant d’avoir, juste après une explication et un bout de code, un lien qui montre le résultat du code expliqué.
BONNE CONTINUATION ET BRAVO A TOUTES VOTRE EQUIPE.
Oui c’est possible, mais je trouve cela très dangereux car c’est la porte ouverte à tous les piratages de votre site !
Si vous y tenez, ce sujet est traité dans le numéro de la revue .net de janvier 2006 (n°103 p68).
Il faut supprimer la fonction d’envoi du mail :
mail($destinataire,$titre,$message,"From: $vEmail"); |
et la remplacer par :
$filename = 'messages.txt'; |
Il suffit ensuite d’ouvrir messages.txt pour prendre connaissance de vos messages.
Comment enregistrer un message dans une base de donnée a la place d’un fichier ???? j’ai une base de donnée comme ceci par exemple :
Base de données : `congres_db`
—
— --------------------------------------------------------
—
— Structure de la table `mail_ad_gr`
—
CREATE TABLE `mail_ad_gr` ( `iduser` int(11) NOT NULL, `idgroup` tinyint(4) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=latin1 ;
—
— Contenu de la table `mail_ad_gr`
—
INSERT INTO `mail_ad_gr` VALUES (1, 2) ;
— --------------------------------------------------------
—
— Structure de la table `mail_adresses`
—
CREATE TABLE `mail_adresses` ( `iduser` int(11) NOT NULL auto_increment, `email` varchar(60) character set latin1 collate latin1_bin NOT NULL, `nom` varchar(100) character set latin1 collate latin1_bin NOT NULL, PRIMARY KEY (`iduser`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;
—
— Contenu de la table `mail_adresses`
—
INSERT INTO `mail_adresses` VALUES (1, 0x696e666f636f6e677265737369737465406d61696c2e636f6d, 0x6a65616e) ;
— --------------------------------------------------------
—
— Structure de la table `mail_groupe`
—
CREATE TABLE `mail_groupe` ( `idgroup` int(11) NOT NULL, `mail_groups` varchar(60) character set latin1 collate latin1_bin NOT NULL, PRIMARY KEY (`idgroup`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 ;
—
— Contenu de la table `mail_groupe`
—
INSERT INTO `mail_groupe` VALUES (0, 0x636f6e677265737369737465) ;
Donc en gros pour envoyer un mail a plusieurs personne ou groupe en même temps ?????