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
Gestion d’une rubrique... en attendant SPIP
Initiation au xhtml - 2
Page Erreur 404 en PHP
Page contact en PHP 1/3
xhtml - 4 : Les entités
Quand JavaScript est désactivé... 1/2
Initiation au xhtml - 3 : Rappel sur les pointeurs internet (URI/URL)
Menu dépliant pour les rubriques
Réaliser un formulaire de contact (3/4)
Quiz en PHP 3/3
Positionnement fixe... même avec Internet Explorer !
Un serveur dédié pour les nuls
Installer un script PHP pour les nuls
Comment faire migrer son site ?
Un lecteur RSS pour votre site 1/2
Publication Spip : forme et typographie
Page contact en PHP 3/3
Editer plusieurs fichiers de syndication 1/3
Contrôler l’accès d’une partie du site avec .htaccess
Javascript : n’oubliez pas Mac OS !
Syndication, comment s’y retrouver
Créer une liste de QCM
Editer plusieurs fichiers de syndication 3/3
Initiation au xhtml - 1
Analyser les réponses à une liste de questions
Menu de navigation sans JavaScript
Belles icônes pas chères !
Un Editeur RSS pour votre site 1/2
Editer plusieurs fichiers de syndication 2/3
Le web structuré et sa présentation
La Netiquette des forums
Réaliser un formulaire de contact (2/4)
Réaliser un formulaire de contact (1/4)
Qualité, centres d’intérêt et motivations des participants aux forums médicaux.
Quiz en PHP 1/3
Conseils pour débuter un site web
Proposer plusieurs styles pour votre site
MARST - Le Moteur Automatisé de Recherche en Santé au Travail
Réaliser un formulaire de contact (5/4)
Etablir un questionnaire statistique en ligne
Réaliser un formulaire de contact (4/4)
Utilisation de la classe easyRSS
Un lecteur RSS pour votre site 2/2
Quiz en PHP 2/3
Tri et Histogramme
Créer un forum à l’aide de phpBB
Quand JavaScript est désactivé... 2/2
Mise en place d’un forum : une décision qui doit être mûrement réfléchie
Soigner en ligne, un art impossible ?
Un Editeur RSS pour votre site 2/2
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
Installer un script PHP pour les nuls
Javascript : n’oubliez pas Mac OS !
Editer plusieurs fichiers de syndication 2/3
Menu dépliant pour les rubriques
Page contact en PHP 3/3
Quiz en PHP 2/3
Quand JavaScript est désactivé... 1/2
Editer plusieurs fichiers de syndication 1/3
Quiz en PHP 1/3
Gestion d’une rubrique... en attendant SPIP
Proposer plusieurs styles pour votre site
Syndication, comment s’y retrouver
Positionnement fixe... même avec Internet Explorer !
Quand JavaScript est désactivé... 2/2
Editer plusieurs fichiers de syndication 3/3
Page contact en PHP 1/3
Menu de navigation sans JavaScript
Page Erreur 404 en PHP
Quiz en PHP 3/3
Afficher plusieurs flux RSS/Atom sur une page
Conseils aux rédacteurs
La syndication de contenu RSS
Présentation de l’espace rédacteurs
Ecrire ce qu’on veut dans SPIP
Lire nos fichiers de syndication
Ecrire ou modifier un article
Astuce pour les images fréquemment utilisées
Afficher un fil RSS/Atom sur votre site 1/3
Afficher un fil RSS/Atom sur votre site 2/3
Les raccourcis typographiques
Reprendre un document Word
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
Placer une image dans un article
Joindre un document à un article
Editez vos flux avec Fil_LE 1/2
Editez vos flux avec Fil_LE 2/2
Joindre un logo à un article
Création à distance d’un fichier de syndication
Abandonnons RSS 0.91 !
Exécuter un Javascript dans une page SPIP
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 ?????