Voir aussi
Dans la même rubrique :
Javascript : n’oubliez pas Mac OS !
Positionnement fixe... même avec Internet Explorer !
Quand JavaScript est désactivé... 2/2
Conseils pour débuter un site web
Menu dépliant pour les rubriques
Quand JavaScript est désactivé... 1/2
Contrôler l’accès d’une partie du site avec .htaccess
Proposer plusieurs styles pour votre site
Réaliser un formulaire de contact (5/4)
Réaliser un formulaire de contact (3/4)
Réaliser un formulaire de contact (2/4)
Réaliser un formulaire de contact (1/4)
Belles icônes pas chères !
Comment faire migrer son site ?
La trousse du webmasterDu même auteur :
Un serveur dédié pour les nuls
Information et désinformation en santé
Stratégie Internet
Réaliser un formulaire de contact (4/4)
Soigner en ligne, un art impossible ?
Le web structuré et sa présentationMême indexation :
Technique Web
Publication Spip : forme et typographie
Belles icônes pas chères !
Proposer plusieurs styles pour votre site
Page contact en PHP 2/3
xhtml - 4 : Les entités
Editer plusieurs fichiers de syndication 1/3
Menu de navigation sans JavaScript
Javascript : n’oubliez pas Mac OS !
Page contact en PHP 1/3
Mise en place d’un forum : une décision qui doit être mûrement réfléchie
Le web structuré et sa présentation
Page contact en PHP 3/3
Gestion d’une rubrique... en attendant SPIP
Réaliser un formulaire de contact (2/4)
Initiation au xhtml - 3 : Rappel sur les pointeurs internet (URI/URL)
Initiation au xhtml - 2
Créer une liste de QCM
Quiz en PHP 2/3
Contrôler l’accès d’une partie du site avec .htaccess
Tri et Histogramme
Editer plusieurs fichiers de syndication 2/3
La Netiquette des forums
Un Editeur RSS pour votre site 2/2
Quiz en PHP 3/3
Installer un script PHP pour les nuls
Editer plusieurs fichiers de syndication 3/3
Réaliser un formulaire de contact (3/4)
Conseils pour débuter un site web
Un lecteur RSS pour votre site 1/2
Positionnement fixe... même avec Internet Explorer !
Soigner en ligne, un art impossible ?
Réaliser un formulaire de contact (5/4)
Un Editeur RSS pour votre site 1/2
Syndication, comment s’y retrouver
Quand JavaScript est désactivé... 1/2
Créer un forum à l’aide de phpBB
Quand JavaScript est désactivé... 2/2
Etablir un questionnaire statistique en ligne
Qualité, centres d’intérêt et motivations des participants aux forums médicaux.
Initiation au xhtml - 1
Comment faire migrer son site ?
Analyser les réponses à une liste de questions
Un lecteur RSS pour votre site 2/2
Quiz en PHP 1/3
MARST - Le Moteur Automatisé de Recherche en Santé au Travail
Utilisation de la classe easyRSS
Menu dépliant pour les rubriques
Réaliser un formulaire de contact (1/4)
Page Erreur 404 en PHP
Un serveur dédié pour les nuls
La syndication de contenu RSS
Ecrire ce qu’on veut dans SPIP
Lire nos fichiers de syndication
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
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 SPIP
Accueil
Boite à Outils
Réaliser un formulaire de contact (4/4)
Vous trembliez déjà à l’idée de devoir programmer ? Rassurez vous comme beaucoup de langages le php a un ensemble de fonctions qui vous prémâchent le travail. D’ailleurs si vous le souhaitez, un autre article vous propose un formulaire en php. Revenons au notre et commençons par le début.
La fonction mail en php
Le but du traitement du formulaire est d’en récupérer les données, de les mettre en forme et de vous les envoyer par courrier éléctronique sans que votre adresse email ne soit divulguée publiquement.
La fonction mail répond à ces critères (les références sur la fonction mail sont ici), elle prend en paramètres :
$adresse : votre adresse email que vous allez inscrire uniquement dans cette page
$sujet : que vous avez fait sélectionner par les champs à boutons radio de votre formulaire.
$texte : qui est le contenu du textarea du formulaire.
$from : qui est le champ dans lequel est indiqué l’adresse de l’expéditeur.
Nous avons donc toutes les données dans des variables sauf votre email.
Commençons donc ainsi le fichier traitement.php :
<?php
$adresse="monadresse@monfai.fr";
$from="$email";
mail($adresse, $sujet,$texte, $from);
?>
Trop facile hein ? Voilà que votre formulaire vous a envoyé un bel email de contact !
Bon, maintenant faisons mieux que ça.
Un champ from avec juste l’email, cela ne respecte pas les recommandations. C’est bête de s’en contenter puisque nous avons le nom et le prénom de l’envoyeur alors étoffons le champ from de la manière suivante :
<?php
$adresse="monadresse@monfai.fr";
$from=" $nom $prenom <$email>";
mail($adresse, $sujet,$texte, $from);
?>
Déjà, c’est plus propre. Ah oui, je sais que certains d’entre vous sont des fans du html dans le mail, si si ne vous cachez pas : on vous a vu.
Le html dans ce cas il faut le préciser dans le from ET le baliser dans le texte.
$adresse="monadresse@monfai.fr";
$from= "$nom $prenom <$email\r\n">;
$from.="MIME-Version: 1.0\r\n";
$from.="Content-Type: text/html";
$texte="<html>";
$texte.="$texte";
$texte.="</html>";
mail($adresse, $sujet,$texte, $from);
ceci signifie au lecteur de mail que c’est un savant mélange de texte et de html et que le protocole est le mime en version 1 et alors là vous pouvez maintenant rajouter tous les tags html que vous souhaitez des font des size des italiques etc.
Et maintenant ? On arrête de s’amuser ?
Presque. Après avoir joué avec notre boite de crayons de couleur et tout taggué en rose avec une image de fond en gif animé (non, c’est une blague). Nous pouvons désormais nous occuper de notre visiteur qui a rempli son formulaire : il remplit, il clique et...rien. C’est quand même un peu léger vous ne trouvez pas ?
Changeons tout ça :
<?php
$adresse="votreadresse@votrefai.com";
$from="From: $prenom $nom<$email>\r\n";
$from.="Reply-To: $prenom $nom <$email>\n";
$from.="X-priority:3\n";
$texte="<html>";
$texte.="$texte";
$texte.="</html>";
$from.="MIME-Version: 1.0\r\n";
$from.="Content-Type: text/html";
if (mail($adresse,$sujet,$texte,$from))
echo("<center><font color=green><br><br><br><h2>Formulaire envoyé ! Je vous répondrais rapidement. Merci!</h2></font><br><a href=/>Cliquez ici pour revenir à l'accueil</a></center>");
else
echo("<center><font color=red><br><br><br><h2>Problème à l'envoi du mail...désolé nous ne pouvons actuellement traiter votre demande</h2></font><br>Contactez nous plus <a href="mailto:$adresse">classiquement</a>");
?>
Et voilà : on vérifie si la fonction mail avec ses paramètres a bien été exécutée et en fonction on envoie un message de confirmation...ou d’erreur !
Hack hack hack....
Eh oui les vilains hackeurs n’aiment pas nos sites : dès qu’ils le peuvent, comme les gosses qui taggent la maison juste peinte, ils defaced votre site pour vous montrer qu’ils sont "très forts"...
Gâchons leur le plaisir de défigurer notre site en évitant le cross scripting : prenez chacune de vos variables et appliquez leur la fonction htmlentities() qui transformera leurs tentatives d’intrusion de code en texte lisible et non interprétable.
Soit $texte=htmlentities($texte) ; $nom=htmlentities($nom) ; etc.
Et voilà, nous avons donc créé un formulaire, mis en forme ce formulaire, mis en place des contrôles dans celui-ci et nous venons d’achever le traitement de ce formulaire.
Il n’y a plus qu’à déposer nos deux fichiers formulaire.html et traitement.php dans le même répertoire de votre serveur web et c’est gagné.
Un dernier truc ?
Ce formulaire est autonome à une condition, dans la page formulaire.html, remplacez le action="traitement.php" par action="http://www.adressedevotresite.com/traitement.php" et lorsque la personne le validera, offline, son ordinateur tentera alors de se connecter pour vous envoyer les données. L’avantage c’est que vous pouvez alors réaliser des formulaires à distribuer ou à envoyer à des collègues et ne pas vous soucier du lieu où sera rempli le formulaire.
Alors bon formulaire et à bientôt.
Tiens : à ce propos, vous ne voudriez pas apprendre à stocker vos données dans un fichier texte ou une base mysql ?

Bonjour,
Je vous remercie pour ce tuto que j’ai "essayé" de suivre à la lettre. Je rencontre , toutefois, un souci. L’email que je reçois est vide. J’ai bien l’expéditeur, l’objet...mais je n’ai pas le texte. Je vous remercie pour votre aide.
Bonjour, Je bute sur la réponse suivant l’envoi du mail : Parse error : syntax error, unexpected T_STRING in /mnt/155/sda/e/9/cg.creation/traitement.php on line 14
Pourtant à la ligne 2 j’ai bien l’adresse mail sans erreur ! Pourriez-vous m’aider ? Merci ...
Bonjour,
voici l’erreur :
Parse error : syntax error, unexpected T_STRING in /mnt/155/sda/e/9/cg.creation/traitement.php on line 14
Voici la ligne 14 sur la partie utile :
echo(...."href="mailto:$adresse">classiquement") ;
ou "mailto:$adresse" = ocgall@free.fr
@+ Merci de m’aider ...
j’ai suivi vos conseils et en bossant sur dreamwearver 8 j’ai obtenu ça...(voir plus bas) mais j’ai du faire une erreur car j’ai hébergé la page que ça donne en html sur archive-host et on y accède à partir d’un lien qui se trouve sur mon blog (car over-blog ne supporte pas le java-script). normalement ça devrait marcher mais ça ne fonctionne pas j’ai du mal faire un truc...
aidez moi s’il vous plait...
mon code :
<script type="text/javascript" language="Javascript" >
<!--
function verification(if(document.formulaire.Votre nom : .value == "nom") {
alert("Veuillez entrer votre Nom svp");
document.formulaire.Votre nom : .focus();
return false;
}
else
return true;)
{
}
//-->
</script>
<script type="text/javascript" language="Javascript" >
<!--
function verification(if(document.formulaire.Votre nom : .value == "prenom") {
alert("Veuillez entrer votre Nom svp");
document.formulaire.Votre nom : .focus();
return false;
}
else
return true;)
{
}
//-->
</script>
<script type="text/javascript" language="Javascript" >
<!--
else
if(document.formulaire.Votre email :.value == "") {
alert("Veuillez entrer votre adresse electronique svp");
document.formulaire.Votre email :.focus();
return false;
}
else
if(document.formulaire.Votre email :.value.indexOf('@') == -1) {
alert("Ce n'est pas une adresse electronique, verifiez la svp");
document.formulaire.Votre email :.focus();
return false;
}
//-->
</script>
<script type="text/javascript" language="Javascript" >
<!--
else
sujetoption = -1
for (i=0; i<formulaire.sujet.length; i++)
{
if(document.formulaire.sujet[i].checked){
sujetoption = i
}
}
if (sujetoption == -1) {
alert("Veuillez choisir un sujet pour votre mail svp");
return false;
}
//-->
</script>
<script type="text/javascript" language="Javascript" >
<!--
else
if(document.formulaire.texte.value == "") {
alert("Veuillez entrer le texte de votre message svp");
document.formulaire.texte.focus();
return false;
}
//-->
</script>
<?php
$adresse="rencontrons-nous@lescorpsdemuses.fr";
$from="From: $Votre prénom : $Votre nom : <$Votre email :>\r\n";
$from.="Reply-To: $Votre prénom : $Votre nom : <$Votre email :>\n";
$from.="X-priority:3\n";
$texte="";
$texte.="$texte";
$texte.="
" ; $from.="MIME-Version : 1.0\r\n" ; $from.="Content-Type : text/html" ; if (mail($adresse,$sujet,$texte,$from)) echo("
J’ai utilisé ce tutoriel pour faire le formulaire contact du site de mon entreprise.
lorsque je fais des essais, il m’envoie vers la page merci, mais conserve le texte signalant un problème d’envoi.
Je ne reçois pas le message sur ma boite
merci de votre aide
salut, merci pour ce tuto aussi je voudrais savoir exactement comment utiliser le "htmlentities()", est-ce qu’il faut le mettre sur toutes les variables ou bien uniquement sur certaines variables précises. si c’est possible pouriez vous faire un exemple pour la 3e ligne de "traitement.php".
Merci pour votre aide.
Bonjour à tous ! J’ai quelques soucis avec la partie traitement.php. Quelqu’un peut-il m’aider à résoudre mon problème ? Lorsque j’envoie le formulaire l’erreur suivante apparaît : "Parse error syntax error, unexpected ’<’ in/home/mon nom utilisateur/public_html/traitement.php on line 31 (tantôt c’est on line 33 ou on line 34 à chaque modification). Je ne sais pas à, quoi cela correspond ni signifie.
D’autre part, ma page formulaire et ma page traitement ont été mises dans le même dossier que mes fichiers site dans public_html, est-ce correct ?
D’avance merci pour vos réponses.
<? Et
===============================================
$adresse="…
$nom = $_POST['nom'];
$prenom = $_POST['prenom'];
$sujet= $_POST['sujet'];
$email = $_POST['email'];
===============================================
Le $_post[‘nom’] est la variable délivrer par le formulaire et qui est stocké dans la variable nom qui est envoyer par la suite par le traitement php
Bon codes a tous
je suis pas douée mais voila ce qu on m’affiche....
Notice : Undefined variable : prenom in c :\documents and settings\ac\mes documents\elonite\traitement.php on line 3
Notice : Undefined variable : nom in c :\documents and settings\ac\mes documents\elonite\traitement.php on line 3
Notice : Undefined variable : email in c :\documents and settings\ac\mes documents\elonite\traitement.php on line 3
Notice : Undefined variable : prenom in c :\documents and settings\ac\mes documents\elonite\traitement.php on line 4
Notice : Undefined variable : nom in c :\documents and settings\ac\mes documents\elonite\traitement.php on line 4
Notice : Undefined variable : email in c :\documents and settings\ac\mes documents\elonite\traitement.php on line 4
Notice : Undefined variable : sujet in c :\documents and settings\ac\mes documents\elonite\traitement.php on line 11
Warning : mail() : Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in c :\documents and settings\ac\mes documents\elonite\traitement.php on line 11
Problème à l’envoi du mail...désolé nous ne pouvons actuellement traiter votre demande
Contactez nous plus classiquement
Bonjour,
J’ai aussi des problèmes pour mettre en ligne mon formulaire de contact et je voulais savoir si vous aviez résolu votre probléme ?
Cordialement.
MIMIE
bonjour à tous.
j’ai suivi ce tuto jusqu’au dernier point, et la page du traitement.php s’affiche bien, MAIS... les message n’arrivent Pas !!!!
aidez-moi SVP ???
bonjour et merci pour ce formulaire que je cherchais depuis longtemps.
j’ai tout mis en place, mon formulaire fonctionne bien, mais je reçois un courrier complètement vide, sans expéditeur ni sujet ni texte. il doit donc y avoir une erreur de syntaxe quelquepart ? ou dois-je chercher ?
voilà ce que me dit mon hébergeur :
Content-Type : text/html X-Spam-Checker-Version : SpamAssassin 3.0.6 (2005-12-07) on monhebergeur.com X-Spam-Level : ****** X-Spam-Status : No, score=6.5 required=7.0 tests=FROM_NO_LOWER,FROM_NO_USER, HTML_90_100,HTML_MESSAGE,HTML_SHORT_LENGTH,MIME_HTML_ONLY, MISSING_SUBJECT,NO_RELAYS,PRIORITY_NO_NAME autolearn=no version=3.0.6 X-Antivirus : avast ! (VPS 071129-0, 29/11/2007), Inbound message X-Antivirus-Status : Clean
or le formulaire fonctionne, me fait les correctifs et m’envoie le mail...
Bonjour,
Votre formulaire.html et traitement.php sont en place.
Lors d’une simulation, après envoi, je bascule bien vers une page de confirmation comportant un lien vers la page d’accueil. De plus, je reçois bien un mail.
Mais un mail vide.
Rien n’est précisé (nom, prénom, Renseignement, Probleme technique, Partenariat, Votre message).
Comment récupérer le contenu du mail ?
Je vous remercie pour la clarté de votre démonstration.
En fait les trois choix sélectionnables par boutons apparaissent dans le sujet du mail reçu.
Mais rien n’apparaît du contenu du message envoyé...
En espérant que quelqu’un passe par là...
Bonjour,
j’ai suivi à la lettre votre article (très bien fait) et lorsque je souhaite envoyer le mail, voici le message d’erreur qui apparait :
Parse error : syntax error, unexpected T_CONSTANT_ENCAPSED_STRING in /var/www/vhosts/francishuster.com/httpdocs/site/traitement.php on line 2
Pourtant j’ai mis les fichiers formulaire et traitement dans le même dossier et même en mettant l’adrese complète pour le fichier traitement dans le champ "action" de la balise "form", ça m’affiche ce message d’erreur... Quelle est cette erreur ?
J’ai honte de poser encore une question après ce tuto mais.... au final l’explorer soit ouvre la page php comme tu texte (sous Firefox) soit affiche les deux phrases (IE).(
Formulaire envoyé ! Je vous répondrais rapidement. Merci ! Cliquez ici pour revenir à l’accueil ") ; else echo(" Problème à l’envoi du mail...désolé nous ne pouvons actuellement traiter votre demande
Contactez nous plus classiquement") ; ?>)
)
Merci encore pour ce tuto tout de même .
Bonjour
A la lecture des différentes pages expliquant bien dans le détail la construction des deux fichiers (html et php) moi aussi je me suis dit là c’est du "costaud".
Depuis samedi, je suis donc sur ce formulaire et si au début bien sûr rien ne marchait (car j’ai voulu faire à ma sauce au niveau présentation) mais là les 2 dernières tentatives, j’ai bien suivi à la lettre ce qui est dit et j’en arrive au même résultat.
Lorsque je renseigne mon formulaire et que je clique sur le bouton Envoyer, j’ai bien ma page traitement.php qui apparaît avec le texte (petite précision pour que cette page s’affiche, il faut que je supprime la partie mailto.....) mais je ne reçois aucun mail dans ma bal (qui est bien signalée à l’endroit prévu).
Je me suis donc rendu dans les avis des utilisateurs et là je lis dans un post que ce script est assez ancien et qu’il ne peut fonctionner.
Patatrac
Qu’en est-il exactement ?
Bonne journée et merci tout de même pour le travail réalisé.
bonjour, merci beaucoup pour ces 4 articles très clairs et pédagogiques pour la réalisation d’un formulaire contact. Ca marche en plus !! ou presque en fait j’ai un souci car je ne reçois pas les données du formulaires et je reçois cela à la place :"Content-Type : text/html X-ProXaD-SC : Score=10 X-Antivirus : avast ! (VPS 000752-1, 26/06/2007), Inbound message X-Antivirus-Status : Clean
" qu’en est il ? et que je faire pour y remédier ? merci beaucoup pour votre retour. hubert
Bonjour, j’ai étudié avec beaucoup d’intérêts votre article sur la création d’un formulaire. Je débute dans la création de site, cependant vos explications me semblaient tellement claires que je croyais la partie gagnée !!
Néanmoins je rencontre un problème et me permet de vous l’exposer :
lorsque je souhaite envoyer le formulaire, une fen^tre windows s’ouvre et me demande si je veux enregistrer le fichier traitement.php sur le disque.
D’ou vient l’erreur ?
Merci de votre aide
Dans mon mail, je recois le message de l’utilisteur en double genre s’il écrit : "salut" je reçois : "salutsalut" ou " ça va bien ?" -> "ça va bien ?ça va bien ?"
LOOOL
Oui je sais c’est marrant mais un peu dommage, tant que les user ne le voient pas ça va...
Bonjour,
J’ai un pb. Je veux que le background demon mail soit d’une certaine couleur mais je n’y parviens pas. De plus lorsque je place les balises html, elles s’inscrivent sur le mail reçu. Avez vous la solution ?
bonjour, merci beaucoup pour ce beau boulot, pour une fois je comprends et j’arrive à quelque chose !!! J’ai néanmoins un souci de taille : je n’arrive pas à recevoir les infos du champ texte. J’y arrive seulement si j’enlève les 2 lignes comprenant $texte=""; alors je reçois du texte qui n'est pas mis en forme, pas très lisible. D'où peut venir le souci ? Merci encore ! Ci-dessous le code, avec quelques petites modifications que j'y ai apporté : <? $adresse="monadresse@free.fr"; $from="From: $nomprenom $entreprise<$email>\r\n"; $from.="Reply-To: $prenom $nom <$email>\n"; $from.="X-priority:3\n"; $texte=""; $texte.="$texte"; $texte.="" ; $from.="MIME-Version : 1.0\r\n" ; $from.="Content-Type : text/html" ; if (mail($adresse,$sujet,$texte,$from)) echo("
Bonjour, tout d’abord merci pour ce tutoriel, ça m’a appris à mieux me familiariser avec le PHP. J’avais un peu de mal avec cette façon de faire (en appelant un autre fichier) donc j’ai fouiné un peu et j’ai réussi à intégrer le code php directement dans la page de formulaire. 9a marche pas mal, je reçois le mail mais le souci c’est que je n’ai pas le contenu du champs (ce qui somme toute est le but de ce formulaire). Pourriez-vous me dire à quel moment mon code a une erreur ?
merci
<?php
$headers ='From: "mailing list"<textfield>'."n";
$headers .='Content-Type: text/plain; charset="iso-8859-1"'."n";
$headers .='Content-Transfer-Encoding: 8bit';
if(mail('zecocoblog@yahoo.fr','nouvel abonné','textfield',$headers))
{
//Message envoyé
}
?>
Super ce tutoriel !!! Mais j’ai quand m^me un souci. voilà j’ai donc fait un formulaire mais lorsque j’essaye d’envoyer ce dernier une page s’ouvre et m’indique cela : " 404 not found 12f Not FOUND The requested URL/messagesent.asp was not found on this server."
Que signifie cela ? J’ai certaiment du faire une erreur de script ? Ma page est elle introuvable ? Dois je ecrire les script en ASp ? Si oui où puis-je trouver ces script car je suis un néophite ? Merci de bien vouloir me repondre c tres important c pour mon travail.
Super ce tutoriel !!! Mais j’ai quand m^me un souci. voilà j’ai donc fait un formulaire mais lorsque j’essaye d’envoyer ce dernier une page s’ouvre et m’indique cela : " 404 not found 12f Not FOUND The requested URL/messagesent.asp was not found on this server."
Que signifie cela ? J’ai certaiment du faire une erreur de script ? Ma page est elle introuvable ? Dois je ecrire les script en ASp ? Si oui où puis-je trouver ces script car je suis un néophite ? Merci de bien vouloir me repondre c tres important c pour mon travail.
Super ce tutoriel !!! Mais j’ai quand m^me un souci. voilà j’ai donc fait un formulaire mais lorsque j’essaye d’envoyer ce dernier une page s’ouvre et m’indique cela : " 404 not found 12f Not FOUND The requested URL/messagesent.asp was not found on this server."
Que signifie cela ? J’ai certaiment du faire une erreur de script ? Ma page est elle introuvable ? Dois je ecrire les script en ASp ? Si oui où puis-je trouver ces script car je suis un néophite ? Merci de bien vouloir me repondre c tres important c pour mon travail.
Bonjour,
C’est bien le premier site sur lequel je vois un sujet traité aussi clairement à la fois très Pro et Sympa. J’avais des problèmes avec mes formulaires, non pas avec la création du formulaire, mais avec son exploitation. Autrement dit avec l’envoi et la réception du Mail qui ne fonctionnait pas toujours correctement selon la configuration de l’expéditeur. Conclusion la méthode n’était pas fiable. J’ai trouvé beaucoup de sources, mais qui revenaient au même que ce que j’avais fait. Bien souvent même en beaucoup plus compliqué et encore moins fiable. J’ai découvert votre site et là je souhaite approfondire. Malheureusement je bute sur une erreur. N’étant pas un spécialiste du php j’aimerais trouver de l’aide. Que ce soit avec la petite formule "Trop facile hein ?" ou avec le code complet ou que je pense complet, Le site me renvoi ce message d’erreur
Parse error : parse error in /www.............../test.php on line 4 Soit : $adresse=monmail@zzz.fr ; Ou bien : Parse error : parse error in /www.............../traitement.php on line 19 Soit : classiquement
Je pense avoir un pb dans le code php pourrais-je le recevoir complet ? J’aimerais trouver une solution par cette méthode qui me semble pourtant bien saine..
Cordialement PH
Bonjour,
Si vous trouvez un parse error ligne "x" il faut relire le script et vérifier qu’il ne manque pas de " ;" à la fin des fonctions ni de guillemets non échappés (par un salsh "/") /’ /" dans le texte.
Allez courage !
Bonjour,
Merci pour votre prompte réponse. Mais avant de vous questionner j’avais déjà regardé le "forum". Je m’étais bien aperçu ne pas être le seul dans ce cas ! J’avais donc regardé du coté < ;> et <"> je n’ai rien trouvé ! Mais comme j’ai pas mal de problème à l’affichage du code même dans l’article, j’ai mis mon code en cause. C’est pourquoi je vous demandais s’il n’était pas possible de recevoir ce code complet. Pour faire simple, j’ai rentré ce code :
// test.php
<?php
$adresse="monadresse@xxxx.net";
$from="$email";
mail ($adresse, $sujet, $texte, $from) ;
?>
J’ai toujours la même erreur !!!! Parse error : parse error in /www/homes/h/...../public_html/test.php on line 4
Sans conviction j’ai tenté ceci // test.php
<?php
Même punition.....
$adresse=/"monadresse@xxxx.net/";
$from=/"$email/";
mail ($adresse, $sujet, $texte, $from) ;
?>
Pourtant TROP FACILE mais SOS ...
Il faut que je trouve un bon manuel de PHP
Cordialement PH
Bonjour,
Oula, il a vieilli aussi ce script
Aujourd’hui on récupère les variables différemment en les déclarant spécifiquement :
$adresse=$_POST["adresse"] ;
$from= etc.
ET en leur assignant également un "filtrage" pour les amis du XSS (cross scripting) :
cela fait donc :
$adresse=htmlentities($_POST["adresse"]) ;
Pour votre problème, ces considérations de sécurité étant faites :
ligne 1
<?php
ligne 2 $adresse = monadress@bla.net;
ligne 3 $from = $email;
ligne 4 mail($adresse, $sujet, $texte, $from);
ligne 5 ?>
nous sommes donc bien d’accord que la ligne 4 c’est "mail etc.", ok ? Il y a donc là dedans des guillemets ou slash ou ; en trop.
Pour $adresse c’est bon, sinon ça aurait planté au dessus.
Pour $from : pareil
reste $sujet ou $texte : quel en est le contenu et comment le protéger (voir les fonctions addslashes sur fr.php.net) : allez c’est presque fini !
Bonjour Merci encore pour votre disponibilité. Dans l’entre-temps j’avais avancé. Je suis parvenu à supprimer toutes les erreurs. Par contre j’avais presque le même problème qu’avec ma solution HTML/Java. Sauf que là au moins s’était systématique ! Plus fiable dans l’erreur !!!! Dommage ce n’était pas ce que je recherchais. Mon mail est bien envoyé, enfin presque, comme lorsque cela ne marchait pas avec mon system. CAD il y a bien l’entête mais le texte n’est pas transmis. ( tout ce qu’il y a dans la "textarea"
Enfin cela ne fait pas 60 printemps, que je suis têtu pour rien je persévère....
J’avance doucement mais "peut être" sûrement... Maintenant ça marche ouffff ! Enfin presque. Car la mise en forme "c’est pas ça". Les "return" se sont perdu en route Bon je vais essayer de trouver mais si vous pouvez me mettre sur le chemin je veux bien. PH
bonjour, je sais que je suis tres matinal, parce que je prefere travailler la nuit ; voilà j’ai entâmé la page de contacte de mon premier site web ; et comme je suis un double zero zerozero en php, j’ai cherché des tut, le votre m’a particulièrement attaché ; alors je l’ai suivi à pas de tortue ! seulement voilà , j’ai beau essayé de me faire envoyé un ptit email sympa ; mais en vein, je me suis dis peut etre que je devais installer le easyphp, j sais je suis p etre tebé mais bon, excusez mon mépris des choses ! j’ai retransféré le racine de mon site dans le www. maintenant j’execute ma page contacte.html à partir du web local ! et quand je clique sur envoyer !!!!???
regardez ce que j’ai comme message sur feuille blanche :
Notice : Undefined variable : email in c :\program files\easyphp1-8\www\site web gitra\site web\pages\traitement.php on line 3
Notice : Undefined variable : objet in c :\program files\easyphp1-8\www\site web gitra\site web\pages\traitement.php on line 4
Notice : Undefined variable : message in c :\program files\easyphp1-8\www\site web gitra\site web\pages\traitement.php on line 4
Warning : mail() : Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in c :\program files\easyphp1-8\www\site web gitra\site web\pages\traitement.php on line 4merci ; de m’eclaircir la voie ; et acceptez monsieur tous mes sincères salutation.
Bonsoir,
Il faudrait nous donner le code complet (sauf l’adresse email) du fichier traitement php. Pour pouvoir voir les lignes désignées en erreur.
Oula, il a vieilli aussi ce script
Aujourd’hui on récupère les variables différemment en les déclarant spécifiquement : $adresse=$_POST["adresse"] ;
C’est ce que l’on appel REGISTER_GLOBALS OFF Mais beaucoup d’hebergeurs sont en ON, et donc, que tu securises ton script avec un $_POST ne sert à rien si tu as un REGISTER_GLOBALS ON
cela fait donc :
$adresse=htmlentities($_POST["adresse"]) ;
mouais if (mail(guguss@ducondu.net,$sujet,$texte,$from)) meme pas besoin de htmlentittie, addslash
Sinon ce script est plus à jour, il y a plusieurs erreurs en fonction de la config de l’hebergeur comme chez ovh par exemple.
A revoir en entier !
bonjour à vous, tout d’abord bravo pour ce tuto, très clair et très pédagogue. Malgrè vos efforts, j’ai de petites problèmes : l’envoie de mon amil fonctionne mais le code html n’est pas interprété, voici le bout de code :
"$recipient = "marie@c-ent.fr" ;
$msg=’

'; $msg.="Nom:\t$nom\nPrénom:\t$prenom\nSociété:\t$societe\nTel:\t$tel\nE-Mail:\t$mail\nMessage:\t$mess\n\n"; $msg.="
" ;$subject = "Demande de renseignement" ;
mail($recipient, $subject, $msg) ;" ................................................. deuxième question, j’ai donc intégré une photo, celle ci sera t’elle directement envoyé avec, ou faut il procédé d’une autre manière ?
voili voila
bonne continuation !
Tout dabord merci infiniement pou ce tutoriel.
Je rencontre un souci lors de la reception du mail apres la validation du formulaire.
Le mail est viege. Avez vous une idée d’ou cela peut il provenir ?
Un grand merci
bonjour,
je rencontre un souci avec la reception des email, en effet ces derniers sont vides !
Auriez vous uen idée ?
merci
j’ai un formulaire ecrit en php sur mon site. Une fois validé par le visiteur, un mail contenant les données du formulaire m’est envoyé sur mon adresse perso. Le problème est que le code fonctionne sous IE mais pas sous firefox ou safari (je tourne sous macos X 10,4,7) et je ne vois pas pourquoi : Sous IE tout fonctionne pour firefox et safari, un mail est envoyé mais les données du formulaire n’y figurent pas. Pouvez vous m’aider ?????
Voici le code du formulaire et du mail sortant
le code du mail :
<?
$MailTo = "glimm@mac.com";
$MailSubject = "Formulaire RDV";
$MailBody = "Formulaire de reponse:\n";
$MailBody .= "Nom médecin : ".$_POST['med']."\n";
$MailBody .= "Date1 : ".$_POST['date1']."\n";
$MailBody .= "Entre H1 : ".$_POST['entre1']."\n";
$MailBody .= "Et H1 : ".$_POST['et1']."\n";
$MailBody .= "Date2 : ".$_POST['date2']."\n";
$MailBody .= "Entre H2 : ".$_POST['entre2']."\n";
$MailBody .= "Et H2 : ".$_POST['et2']."\n";
$MailBody .= "Date3 : ".$_POST['date3']."\n";
$MailBody .= "Entre H3 : ".$_POST['entre3']."\n";
$MailBody .= "Et H3 : ".$_POST['et3']."\n";
$MailBody .= "Nom : ".$_POST['nom']."\n";
$MailBody .= "Prenom : ".$_POST['prenom']."\n";
$MailBody .= "Date de naissance : ".$_POST['naissance']."\n";
$MailBody .= "Téléphone : ".$_POST['phone']."\n";
$MailBody .= "Adresse Email : ".$_POST['email']."\n";
$MailBody .= "----------- Commentaires -----------";
$MailBody .= stripslashes($_POST['commentaires']);
$MailBody .= "------------------------------------";
if (!mail($MailTo, $MailSubject, $MailBody)) echo "impossible d'envoyer l'email";
?>
bonjour,
en html c’est avec
<input type="file">
le champ et pour le téléchargement de fichier via php je vous renvoie sur ce lien (ATTENTION A LA SECURITE !).
Voici un code corrigé et testé qui fonctionne également chez Free.fr :
<?php
error_reporting(0); // On n'affiche pas les horribles erreurs PHP, sauf pour dépunaiser
$from="From : $prenom $nom <$email>\r\n" ;
$from.="Reply-To : $prenom $nom <$email>\n";
$from.="X-priority:3\n";
$texte="$texte" ;
$from.="MIME-Version : 1.0\r\n";
$from.="Content-type : text/html ; charset=iso-8859-1\r\n" ;
$sujet=stripslashes($sujet) ;
$texte=stripslashes($texte) ;
$from=stripslashes($from) ;
if (mail("banasnieres@free.fr",$sujet,$texte,$from)) // veuillez indiquer le destinataire du formulaire
echo("<p>Formulaire envoyé. Merci.</p>");
else echo("<p>Problème lors de l'envoi du message.</p>") ;
?>
stripslashes vire les \ avant les apostrophes (certains serveurs en rajoutent à l’envi)
<?php
$adresse="mijo@marques-en-ligne.fr";
$from=" $code $adresse $paiement <$email\r\n">;
j'ai essayé
$from=" From:$code $adresse $paiement <$email\r\n">;
le problème est le même.
Où ai-je péché?
merci de votre aide
Bonjour,
pour les péchés je dirais IIS comme serveur 
sinon comme erreur je miserai sur :
$from=" From :$code $adresse $paiement <$email\r\n"> ;
<code>
pour lequel je mettrais plutôt:
<code>
$from=" From :$code $adresse $paiement <$email>\r\n" ;
c’est à dire la fermeture de tag dans le echo et les retour à la ligne après cette fermeture.
Allez en paix mon fils, et installez Apache plutôt 
bonjour, un grand merci pour vos explication qui ont le merite d’etre claire et qui de plus sont traitée avec de l’humour. Voila mon problème, je suis occuper de développer un site et celui-ci contient un formulaire de contact asser complexe, que j’ai récupérer et adapter a mes besoins. Bref... j’ai suivi vos explications quant à d’une part effectuer une verification sur les champs rempli et d’autre part fais un fichier php pour l’envoi du mail, malheureusement ca ne fonctionne pas. je suis débutant en programmation. et j’aimerais vos conseil afin de voir ou j’ai fais des erreurs. ce qui me permettra dans tirer des lecons.
voici l’adresse temporaire de mon site. http://membres.lycos.fr/degreefolivier/
et voici la partie de code du fichier PHP
<?php
$adresse="olivier.de.greef@gmail.com";
$from="From: $form_demandeur_nom<$email>\r\n";
$from.="Reply-To: $form_demandeur_nom <$email>\n";
$from.="X-priority:3\n";
$texte="<span class="base64" title='IjsNCiR0ZXh0ZS49IiR0ZXh0ZSI7DQokdGV4dGUuPSI=' ></span>";
$from.="MIME-Version: 1.0\r\n";
$from.="Content-Type: text/html";
if (mail($form_demandeur_nom,$form_demandeur_adresse,$form_demandeur_codepost,$form_demandeur_commune,$form_demandeur_email ))
echo("<center><font color=green><br><br><br><h2>Formulaire envoyé ! Je vous répondrais rapidement. Merci!</h2></font><br><a href= http://membres.lycos.fr/degreefolivier/>Cliquez ici pour revenir à l'accueil</a></center>");
?>
sauriez vous me guider dans mes erreurs
Grand merci d’avance
Bonjour,
sur la page indiquée : http://membres.lycos.fr/degreefolivier/offre.htm le formulaire est envoyé même si les champs ne sont pas remplis donc l’erreur vient déjà de là : problème javascript !
Il faut procéder champ par champ, courage.
Bonjour,
bravo pour votre site, mais le language html, c’est un peux du chinois pour moi... Voilà mon problème, j’ai un site, un formulaire, mais au moment de l’envoi je tombe sur un erreur 404...et je ne comprend pas pourquoi ca ne passe pas... qui peux m’aider ? y’a que ca qui ne fonctionne pas !!! arggg... merci d’avance pour votre aide...
salut Teddy,
euh..ton formulaire là
il n’a rien à voir avec celui proposé sur ce site hein 
Bon, ton formulaire, regarde dans le code :
<form action="/.mail" method="POST">
Tu as mis ça dans ton formulaire et tu as une erreur 404 ce qui signifie que la page appelée par le formulaire n’est pas bonne.
En effet, /.mail signifie le fichier invisible (".") et "/" signifie à la racine : je ne pense pas que ce soit l’effet voulu.
"./mail" signifierai le fichier mail du répertoire courant. Il est étonnant qu’il n’ait pas d’extension : php, cgi, asp ou autre.
Allez au boulot : débugguer c’est 99% du travail 
Je suis désolé mais je ne comprend pas tes explications ...comme je le disais, les " et les . c’est un peux du chinois, j’ai fait mon site sur frontpage, en essayant de récupérer à gauche, à droite des éléments pour m’en sortir... car j’ai appris tout seul à faire mon site web...peux-tu m’expliquer plus simplement ?
si tu veux voir un peu plus mon site : www.diamoonanimation.com
Bonjour,
Bravo pour votre site et vos explications qui sont sérieuse, précises et en plus humouristiques. Voila mon problème : Je souhaiterais recevoir par mail l’adresse mail d’un visiteur qui souhaite s’inscrire à une des newsletters du site. Que dois je faire pour que le bouton envoyer fonctionne correctement ?
je vous remercie d’avoir expliquer le code avec beaucoup de sérieux et de le détailler ainsi.
merci bien
Bonjour,
parceque le but n’était pas de faire le meilleur du top du top du javascript ou du php en les mettant en concurrence (ben oui le javascript se fait aussi côté serveur) mais plutôt de montrer les capacités basiques de ces langages pour permettre au lecteur d’y toucher un peu et d’aller ensuite plus loin.
ça s’appelle un didacticiel et d’ailleurs sur ce même site Alain Sichel a fait un formulaire contact clef en main uniquement en php pour ceux qui veulent du monolangage prêt à l’emploi.
Sinon merci pour la suggestion 
bonjour voila j’ai realiser grace a votre tuto un formulaire de contact tout fonctionne a part un truc je reçois le mail mais dans le mail il n’y a rien du tout !!!
pas une données c’est une page blanche
voila merci de m’aider a+
Bonjour,
Voilà j’ai réalisé ce formulaire a quelques différence près mais j’ai rajouter des checkbox a choix multiple et je n’arrive pas à récuperer les infos dans mon mail, il ne m’envoie que la valeur de la derniere checkbox coché.
Voici une partie du code HTML :
Voici une partie de ma page traitement.php :
$texte="$numeros, $civilite, $nom, $prenom, $fonction, $societe, $adresse1, $adresse1bis, $cp, $ville, $pays, $tel, $fax, $email, $paiement" ;
et voici la partie en javascript pour verifier que le formulaire est bien remplie :
else numerosoption = -1 for (i=0 ; i if(document.formulaire.numeros[i].checked) numerosoption = i if (numerosoption == -1) alert("Veuillez choisir les numéros a commander.") ; return false ;
Bonjour,
deux options :
Le serveur web sur lequel est votre fichier transmet le document au lieu de le traduire en html (en général ça affiche plutôt le code car il le trasmet d’habitude comme un fichier texte) : il faut l’installer (module de configuration d’apache ou de IIs)
Votre navigateur télécharge les extensions "php" comme des programmes (ça se règle alors dans les préférences du navigateur) et dans ce cas c’est vrai pour TOUS les .php
Bonne journée
Bonjour !! Merci pour le tutoriel pour le formulaire !! J’ai un soucis je reçois bien le message..mais le champ texte est vide..alors que les autres informations passent bien
que faire ...j’ai utilisé vos fichiers fournis !!
Bienvenue dans le monde du débuggage 
Je n’ai pas la solution à votre problème mais juste des pistes à suivre :
Bonne chasse !
Il manque un point "." Dans le script :
Attention la balise <.h.tm.l.> (sans les points !!) sur se poste ne peut pas paraitre donc j’ai du tricher en enlevant le "<" dans la citation ci dessous :
<?php
$adresse="votreadresse@votrefai.com";
$from="From: $prenom $nom<$email>\r\n";
$from.="Reply-To: $prenom $nom <$email>\n";
$from.="X-priority:3\n";
{{$texte="html>";}}
$texte.="$texte";</quote>
{{texte="html>";}} est le point???
{{texte.="html>}} ceci est juste? ne pas oublier le <
-----------je débute donc j'ai pu me tromper, mais j'ai eu l'erreur de ne pas recevoir de texte bien que tout le reste est bon, je n'est pas testé cette version.
J'ai opté pour la solution de ne garder que
{{$texte.="$texte" ;}}
pour recevoir mon texte, ca fonctionne!
Bonjour,
Ce n’est pas l’erreur mais cela là mets en évidence car il est étrange que cela ne fonctionne pas sans le point, je m’explique :
$texte c’est la variable texte donc $texte="<html>"; attribue à cette variable $texte le contenu <html>.
$texte.=$blabla" ; AJOUTE le contenu de $blabla au début de $texte (le "." c’est la concaténation).
Par contre (je n’ai plus en tête) si il y a écrit $texte.="$texte" ; c’est clair que c’est une erreur car la ligne d’avant je donne en contenu à $texte <html> donc il n’apparait pas de texte dans le message...
Il y a une erreur de nommage (c’est con hein ?) entre la variable conteneur du texte et son traitement en email qui s’appelle pareil et qui écrase la première.
Donc en changeant le nom ($contenuMail au lieu de $texte) tout sera résolu.
PS : pour afficher du code sous spip il faut entourer le code par des balises code < code > ouvertes et fermées bien sûr.
Pas mal de tout votre formulaire ! Merci à ceux qui l’ont réalisé. Voici mon probleme : le formulaire "marche" très bien, mais(y a toujours un mais) ; ex:je commence avec l’adresse(j’ai changer l’ordre) mail, j’ecris n’importe quoi, puis je clique sur "envoyer" ;j’ai le pop-up avec le message d’erreur qui apparait puis en cliquant sur "ok" la fenetre se ferme et le message est envoyé au lieu de revenir sur le champs texte du mail ; Et ç’est valable pour tous le champs !
Dans un mot : peu importe l’erreur que j’ai , le message est envoyé !!
pourquoi ? merci pour votre aide !
Bonjour et merci !
J’aime mieux les questions avec "pourquoi" que celles demandant de débugguer à la place de celui qui travail 
Bref, le pourquoi est tout bête : les deux conditions sont remplies. (les variables sont créées à l’envoi du formulaire si l’une d’entre elle n’est pas nulle). Il faudrait donc en fait tester les variables préalablement à l’envoi (cf le mode d’emploi pour le faire en javascript juste avant).
Et euh...bonnes vacances 
J’ai le même problème,
l’avez-vous résolu ?
Stéphane
Il fonctionne bien mon formulaire mais dans le mail envoyé au lieu du texte mis en forme j’ai ceci :
This is a multi-part message in MIME format. —_----------=_11184246423651482 Content-Disposition : inline Content-Length : 32 Content-Transfer-Encoding : binary Content-Type : text/plain...
Comment faire pour que cela n’apparaisse plus ?
je ne peu pas mettre la ligne 14 elle et visible au dessus de ce message (adresse de la page:http://www.mmt-fr.org/article78.html)
je ne comprend pas l’erreur qui s’affiche après avoir cliqué sur envoyé : Parse error : parse error, unexpected T_STRING in /home/toppr/public_html/traitement.php on line 14 Merci de votre aide. a+
Bonjour, tout d’abord merci merci beaucoup pour votre aide et la présentetion de ce formulaire.je viens de découvrir votre il trés intéressant. voila le code php de ma page :
<?php $adresse="xxxxx@xxxx.net" ; $from="From : $prenom $nom<$email>\r\n" ; $from.="Reply-To : $prenom $nom <$email>\n" ; $from.="X-priority:3\n" ; $texte=""; $texte.="$texte"; $texte.="" ; $from.="MIME-Version : 1.0\r\n" ; $from.="Content-Type : text/html" ; if (mail($adresse,$sujet,$texte,$from)) echo("
Formulaire envoyé ! Je vous répondrais rapidement. Merci !
Cliquez ici pour revenir à l'accueil
") ; else echo("
Problème à l'envoi du mail...désolé nous ne pouvons actuellement traiter votre demande
Contactez nous plus classiquement") ; ?>
et voila l’erreur qui s’affiche après avoir cliqué sur envoyé : Parse error : parse error, unexpected T_STRING in /home/toppr/public_html/traitement.php on line 14 Merci de votre aide. a+
Eh ben là dans le texte que vous donnez je n’ai que onze lignes alors le parse à la ligne 14...
En gros, un parse error signifie que la syntaxe n’est pas bonne. Le plus souvent il s’agit de guillemets non échappés (\") par un anti-slash : regardez votre fichier et corrigez.
Eh ben là dans le texte que vous donnez je n’ai que onze lignes alors le parse à la ligne 14...
En gros, un parse error signifie que la syntaxe n’est pas bonne. Le plus souvent il s’agit de guillemets non échappés (\") par un anti-slash : regardez votre fichier et corrigez.
Bonjour, tout d’abord merci pour votre super tutos qui est venu a poing au momment ou j’en avais le plus besoin. voila le code php de ma page :
<?php
$adresse="XXX@XXX.com";
$from="From: $prenom $nom $adresse $ville $telephone<$email>\r\n";
$from.="Reply-To: $prenom $nom $adresse $ville $telephone <$email>\n";
$from.="X-priority:3\n";
$texte="<span class="base64" title='IjsNCiR0ZXh0ZS49IiR0ZXh0ZSI7DQokdGV4dGUuPSI=' ></span>";
$from.="MIME-Version: 1.0\r\n";
$from.="Content-Type: text/html";
if (mail($adresse,$sujet,$texte,$from))?>
et voila l’erreur qui s’affiche après avoir cliqué sur envoyé : Parse error : parse error in d :\www\xxxxxxxx.com\htdocs\traitement.php on line 13 Merci de votre aide.
apres plusieur essais j’ai toujour le même message en utilant le même code que vous a savoir :
<?php
$adresse="votreadresse@votrefai.com";
$from="From: $prenom $nom<$email>\r\n";
$from.="Reply-To: $prenom $nom <$email>\n";
$from.="X-priority:3\n";
$texte="<span class="base64" title='IjsNCiR0ZXh0ZS49IiR0ZXh0ZSI7DQokdGV4dGUuPSI=' ></span>";
$from.="MIME-Version: 1.0\r\n";
$from.="Content-Type: text/html";
if (mail($adresse,$sujet,$texte,$from))
echo("<center><font color=green><br><br><br><h2>Formulaire envoyé ! Je vous répondrais rapidement. Merci!</h2></font><br><a href=/>Cliquez ici pour revenir à l'accueil</a></center>");
else
echo("<center><font color=red><br><br><br><h2>Problème à l'envoi du mail...désolé nous ne pouvons actuellement traiter votre demande</h2></font><br>Contactez nous plus <a href="mailto:$adresse">classiquement</a>");}
?>
L’erreur "Parse Error" que tu obtiens à cette ligne est due au fait que l’interpreteur php voit une erreur au niveau de guillemets <"> tu dois donc mettre a cette ligne un <\> juste avant chaque guillemet que tu désire interpreter en tant que caractère...
voilà c’est tout... tu approches du but...
Bonjour, tout d’abord merci merci beaucoup pour votre aide et la présentetion de ce formulaire. voila le code php de ma page :
<?php
$adresse="xxxxx@xxxx.net";
$from="From: $prenom $nom<$email>\r\n";
$from.="Reply-To: $prenom $nom <$email>\n";
$from.="X-priority:3\n";
$texte="<span class="base64" title='IjsNCiR0ZXh0ZS49IiR0ZXh0ZSI7DQokdGV4dGUuPSI=' ></span>";
$from.="MIME-Version: 1.0\r\n";
$from.="Content-Type: text/html";
if (mail($adresse,$sujet,$texte,$from))
echo("<center><font color=green><br><br><br><h2>Formulaire envoyé ! Je vous répondrais rapidement. Merci!</h2></font><br><a href=/>Cliquez ici pour revenir à l'accueil</a></center>");
else
echo("<center><font color=red><br><br><br><h2>Problème à l'envoi du mail...désolé nous ne pouvons actuellement traiter votre demande</h2></font><br>Contactez nous plus <a href="mailto:$adresse">classiquement</a>");
?>
et voila l’erreur qui s’affiche après avoir cliqué sur envoyé : Parse error : parse error, unexpected T_STRING in /home/toppr/public_html/traitement.php on line 14 Merci de votre aide. a+
Bonjour,
intéresse toi au charset qu’il y a dans la page html du formulaire, vérifie que tu utilises bien le même pour ta réception.
Si tu n’y arrives pas ou ne vois pas de quoi je parle, il y a plus compliqué : tu passes ton texte avec html-entities() comme fonction de traitement et, en mail html, ça passera partout 
suite au message precedent
voila le code que j’ai mis dans ma page traitement.php :
« <?php $adresse="nadege.schmitt@noos.fr"; $from="$conférences, $civilite, $nom, $prenom, $fonction, $societe, $adresse1, $adresse1bis, $cp, $ville, $tel, $fax, $email, $civilite2, $nom2, $prenom2, $fonction2, $societe2, $adresse2, $adresse21, $cp2, $ville2, $tel2, $fax2, $email2, $civilite3, $nom3, $prenom3, $fonction3, $societe3, $adresse3, $adresse31, $cp3, $ville3, $tel3, $fax3, $email3,, $nombre, $paiement, $facture, $nomfact, $societefact, $adressefact, $adressefact2, $cpfact, $villefact, $paysfact, $doc, $cgv"; if (mail($adresse, $sujet, $texte, $from)); header("Location: http://www.hybride-test.com/merci/"); ?> »
voila et encore merci pour voitre aide.
Oula 
avec un $from pareil il doit pas y avoir grand chose à arriver en mail si ? En tous cas ça va pas marcher souvent...
Le contenu du champ $from (qui signifie "de la part de") est visiblement confondu avec le champ $texte.
le pb du header sera à voir APRES cette correction 
Voila
J’ai corriger le from et rajouter le champs $texte par contre evidement ca marche toujours pas pour le header.
J’attend avec impatience la suite des recomandations (lol)
Merci
Oula 
avec un $from pareil il doit pas y avoir grand chose à arriver en mail si ? En tous cas ça va pas marcher souvent...
Le contenu du champ $from (qui signifie "de la part de") est visiblement confondu avec le champ $texte.
le pb du header sera à voir APRES cette correction 
Bonjour,
J’ai bien mis le header location mais voila ce qu’il me mets sur la page apres avoir cliquer sur le bouton envoie
Cannot modify header information - headers already sent by (output started at /home/hybridety/www/traitement.php:9) in /home/hybridety/www/traitement.php on line 13
et voici le code de ma page traitement.php :
« <?php $adresse="monadreese@noos.fr"; $from="$conférences, $civilite, $nom, $prenom, $fonction, $societe, $adresse1, $adresse1bis, $cp, $ville, $tel, $fax, $email, $civilite2, $nom2, $prenom2, $fonction2, $societe2, $adresse2, $adresse21, $cp2, $ville2, $tel2, $fax2, $email2, $civilite3, $nom3, $prenom3, $fonction3, $societe3, $adresse3, $adresse31, $cp3, $ville3, $tel3, $fax3, $email3,, $nombre, $paiement, $facture, $nomfact, $societefact, $adressefact, $adressefact2, $cpfact, $villefact, $paysfact, $doc, $cgv"; if (mail($adresse, $sujet, $texte, $from)); header("Location: /merci.html"); ?> » Merci de votre aide.
Oula 
avec un $from pareil il doit pas y avoir grand chose à arriver en mail si ? En tous cas ça va pas marcher souvent...
Le contenu du champ $from (qui signifie "de la part de") est visiblement confondu avec le champ $texte.
le pb du header sera à voir APRES cette correction 
Bonjour,
Je souhaiterais qu’apres avoir envoyer les formulaire, je puisse rediriger vers une page de remerciement fait en html que j’ai nomer /merci.html.
J’ai essayer de mettre le code dans mon formulaire, mais celui ci marche pas pourtant il envoie bien le formulaire dans ma boite mail.
Ps : mon formulaire se trouve dans un article SPIP. Tous marche sauf la redirection.
Merci de votre aide.
Bonjour,
à la fin du script : il ya un if mail() qui signifie "si le message est bien parti" qui vérifie que tout a été ok.
Il suffit de compléter cette ligne pour rediriger la page : en php c’est headerlocation()
cf : http://www.nexen.net/docs/php/annotee/function.header.php
Bonjour, Je suis chez OVH. Avec le script ci-dessous, j’ai une page avec "retour accueil", mais je ne reçois rien. J’ai simplifié parce que j’avais une erreur "Parse error : parse error, unexpected T_STRING in /home.2/nemodus/www/traitement.php on line 14"
Il se peut que ce soit un pb de version php. Je ne comprends pas comment mettre cette syntaxe pour chaque variables transmises ? $_POST["nom"] = $nom ;
MERCI ! Et désolé d’être aussi nul
)))
<?php
$adresse="xx@monsite.com";
$from="From: $prenom $nom<$email>\r\n";
$from.="Reply-To: $prenom $nom <$email>\n";
$from.="X-priority:3\n";
$texte="<span class="base64" title='IjsNCiR0ZXh0ZS49IiR0ZXh0ZSI7DQokdGV4dGUuPSI=' ></span>";
$from.="MIME-Version: 1.0\r\n";
$from.="Content-Type: text/html";
if (mail($adresse,$sujet,$texte,$from))
echo("<a href='./'>Retour accueil</a>");
else
echo("<a href='./'>pb envoi</a>");
Bonjour,
$_POST["nom"]=$nom signifie au script php que le contenu du champ ayant pour nom "nom", qu’il reçoit par un formulaire en post (cf les paramètres de "form" à la page html du formulaire) sera mis dans la variable $nom.
Ensuite, le fait d’avoir "simplifié" a sûrement rendu le script incomplet 
Si vous trouvez un parse ligne 14 il faut relire le script et vérifier qu’il ne manque pas de ; à la fin des fonctions ni de guillemets non échappés /’ /" dans le texte.
Courage
Bonjour,
j’ai exactement le même problème que vous, je suis également chez OVH
je n’ai pas changé le script à part mon e-mail. Lorsque les champ du formulaire sont rempli, la page : formulaire envoyé apparaît ! + un lien de retour à la page d’accueil. Mais le mail n’arrive pas dans ma boîte...
Que puis-je faire ? S’agit-il du code PHP ? Pourriez-vous aider une novice en programmation ?
Merci
Sia
Bonjour et merci pour vos superbes tutos,j’ai tout de même un petit problème, je reçois bien le mail, mais il est vide, j’ai le sujet, le nom et prenom du corespondant, son adresse mail mais pas le message en lui même, je suis chez free, mais je ne pense pas que ce soit le problème étant donné que je reçois le mail, j’ai modifié la présentation de formulaire.htm, mais il ne me semble pas y avoir d’ erreur, je ne comprend pas .
le formulaire se trouve la : http://cv.varenne.online.fr/contact.htm
et traitement.php là : http://cv.varenne.online.fr/traitement.php
Merci d’avance.
ça y est ça fonctionne !!!
voila mes modifs :
<?php
$adresse="frva78@free.fr";
$from="From: $prenom $nom<$email>\r\n";
$from="Reply-To: $prenom $nom <$email>\n";
$from="X-priority:3\n";
//$texte="<html>";
$texte="<message de la part de:
Nom: $nom Prénom: $prenom
Email: $email
Sujet: $sujet
Message:
$texte>";
$texte="$texte";
$from="MIME-Version: 1.0\r\n";
$from="Content-type: text/html; charset=iso-8859-1\r\n";
$adresse=htmlentities($adresse) ; $sujet=htmlentities($sujet) ; $texte=htmlentities($texte) ; $from=htmlentities($from) ;
if (mail($adresse, $sujet, $texte, $from))
echo("<center><font color=white><h4>Formulaire envoyé ! Je vous répondrais rapidement. Merci!</h4></font></center>");
else
echo("<center><font color=red><h5>Problème à l'envoi du mail...désolé nous ne pouvons actuellement traiter votre demande</h5></font>");
?>
le seul truc c’est que le contenu du message est sur une seule ligne,j’ai pas encore trouvé comment faire autrement. Les noms, prenom, email sujet se retrouvent dans le corp du message, car je n’avais pas le mail du correspondant.
(JE SUIS CHEZ FREE ET TOUT FONCTIONNE PARFAITEMENT)
je ne sais pas si ceci* fonctionne mais je l’est mis quand même.
* $adresse=htmlentities($adresse) ; $sujet=htmlentities($sujet) ; $texte=htmlentities($texte) ; $from=htmlentities($from) ;
voilà, j’ai passé 24 heures pour arriver à mes fin, dommage que personne ne se soit manifesté pour me donner un coup de main.
Merci tout de même à Dr Philippe Auriol pour son tuto.
Le code est un peu en vrac mais je sais pas comment faire.
ça y est ça fonctionne !!!
voila mes modifs :
<?php
$adresse="adresse@domaine.fr";
$from="From: $prenom $nom<$email>\r\n";
$from="Reply-To: $prenom $nom <$email>\n";
$from="X-priority:3\n";
//$texte="<html>";
$texte="<message de la part de:
Nom: $nom Prénom: $prenom
Email: $email
Sujet: $sujet
Message:
$texte>";
$texte="$texte";
$from="MIME-Version: 1.0\r\n";
$from="Content-type: text/html; charset=iso-8859-1\r\n";
$adresse=htmlentities($adresse) ; $sujet=htmlentities($sujet) ; $texte=htmlentities($texte) ; $from=htmlentities($from) ;
if (mail($adresse, $sujet, $texte, $from))
echo("<center><font color=white><h4>Formulaire envoyé ! Je vous répondrais rapidement. Merci!</h4></font></center>");
else
echo("<center><font color=red><h5>Problème à l'envoi du mail...désolé nous ne pouvons actuellement traiter votre demande</h5></font>");
?>
le seul truc c’est que le contenu du message est sur une seule ligne,j’ai pas encore trouvé comment faire autrement. Les noms, prenom, email sujet se retrouvent dans le corp du message, car je n’avais pas le mail du correspondant.
(JE SUIS CHEZ FREE ET TOUT FONCTIONNE PARFAITEMENT)
je ne sais pas si ceci* fonctionne mais je l’est mis quand même.
* $adresse=htmlentities($adresse) ; $sujet=htmlentities($sujet) ; $texte=htmlentities($texte) ; $from=htmlentities($from) ;
voilà, j’ai passé 24 heures pour arriver à mes fin, dommage que personne ne se soit manifesté pour me donner un coup de main.
Merci tout de même à Dr Philippe Auriol pour son tuto.
Le code est un peu en vrac mais je sais pas comment faire.
Ouïe ! Une page html commence par un doctype, puis par une balise annonçant le début du html et se termine par une balise annonçant la fin du html : dans ta page web on trouve deux pages incrustées l’une dans l’autre et un doctype au milieu du code...
Evidemment : vu comme ça le formulaire ne peut qu’avoir du mal.
Premier point : faire une page de formulaire correcte et seulement après tu testeras le formulaire !
Bonjour,
cet article n’a pas la prétention d’être "une leçon" : je suis débutant en php, à peine plus avancé que vous et d’ailleurs ce n’est pas mon métier. Il s’agit juste de la mise en forme de ce que j’ai appris pour que cela serve à d’autres.
Pour votre problème :
Courage !
Bonjour et félicitations pour ce post.
J’ai suivi tous vos conseils. j’ai publié les fichiers (http://beafabri.chez.tiscali.fr/formulaire.html) et lorsque je valide, j’obtiens le message suivant : "Parse error : parse error in /www/traitement.php on line 12"
Le php est pourtant ouvert chez mon hébergeur.
Que puis-je faire ?
Merci
Bonjour,
ce message signifie que :
1/ php est bien activé et fonctionnel sur votre serveur
2/Il y a un problème de syntaxe dans le fichier à ligne onze ou douze.
Soit :
if (mail($adresse,$sujet,$texte,$from))
echo("<center><font color=green><br><br><br><h2>Formulaire envoyé ! Je vous répondrais rapidement. Merci!</h2></font><br><a href=/>Cliquez ici pour revenir à l'accueil</a></center>");
Cela peut-être lié :
a une modification de version de php (désormais les valeurs transmises en post doivent être annoncées dans le fichier de traitement sous la forme : $_POST["nom"] = $nom ; et ce pour chaque variable transmise par le formulaire.
a un guillement ajouté dans la ligne douze : simplifiez là au maximum pour la tester ( exemple :
echo("<center><font color=green><br><br><br><h2>Formulaire envoyé ! Je vous répondrais rapidement. Merci!</h2></font><br><a href=/>Cliquez ici pour revenir à l'accueil</a></center>"); ) va devenir en simple et sans risque : echo("<a href='./'>Retour accueil</a>");
Voilà, après le repas et avant de travailler c’est tout ce qui me vient à l’esprit : rien de grave en tous cas, juste une petite erreur à identifier dans ces deux lignes (si besoin donnez moi un lien vers le contenu exact du fichier traitement.php).
Cordialement
Merci de votre réponse si rapide.
En revanche, même après simplification de la ligne 14, j’ai toujours le même message :
La page est accessible à partir de : http://beafabri.chez.tiscali.fr/contact/formulaire.html
Le fichier php à partir de : http://beafabri.chez.tiscali.fr/contact/traitement.php
merci bcp
Bonjour monsieur,
C’est super votre site pour le profane et à la fois le fanatique d’informatique comme moi.
Mais, je ne sais comment insérer les formules des contrôles dans le formulaire. J’ai simplement essayé de mettre les formules des contrôles à la suite des formules du formulaire.
Espérant recevoir une reponse de vous, je vous souhaite cher monsieur, une bonne journée.
Ibrahim Doumbia Francfort, Allemagne.
Bonjour,
il suffit d’intégrer en html le matériel nécessaire à l’ouverture en popup :
<a href="$PHP_SELF#" onClick="window.open('mapage.php','_blank','toolbar=0, location=0, directories=0, status=0, scrollbars=0, resizable=0, copyhistory=0, menuBar=0, width=300, height=300');return(false)"title="un titre explicatif"><img src="imgs/source/monimage.jpg" alt="blabla" border="0"></a>
cela donne une image cliquable qui ouvre un popup sans barre d’outil, sans barre de location, de status ni de menu et qui fasse 300 sur 300px.
Tu adaptes ça comme tu le veux en fait.
A+
bonjour et merci effectivement, cela fonctionne mais j’ai deux autres petits soucis : 1°) si le message qui est laissé sur le formulaire par le visiteur contient des retours chariot, ça plante l’envoi du mail
2°) j’ai mis des cases à cocher à la place des boutons radio mais je n’arrive pas à récuperer les valeurs des cases cochées (exemple : partenariat et/ou pb technique) ; car je voudrais les intégrer dans le corps du mail que je reçois
merci d’avance pour votre aide
Bonjour,
Pour le 1 je suis un peu surpris car je n’ai pas ce problème sur mes formulaires (et ça marche sur un paquet de site). Aurais tu une url pour que je teste ce qui bloque ?
Pour le 2 il faut donner un value="partenariat" à ta case à cocher et tester dans le formulaire si la variable attachée à la case est vide ou non, si elle n’est pas vide tu l’affiche if ($macase !="" ) echo ($macase) ;
moala 
bonjour et encore merci pour ton aide précieuse : voici l’url : http://lodam.free.fr/test/contact.html pour le formulaire
et http://lodam.free.fr/test/traitement.php pour le php
Donc le problème est que qd tu laisses le message simple (ex : bonjour), le formulaire est envoyé mais si tu laisses un message du genre ci-dessous : ertu
ertu123465
sdf
et bien là ça plante (à cause selon moi des retours chariot)
tu verras, j’ai essayé htmlentities mais ça me donne une autre erreur.
Enfin, je n’ai pas encore appliqué ta formule pour récupérer les valeurs des cases cochées dans le mail reçu
à bientot damien
Surprenant : je t’ai envoyé un message normal avec retour chariot etc. et ça marche...
je copie/colle ton texte : je valide et Internal Server error... y aurait il un problème particulier chez free ? Mais alors..pourquoi seulement sur cette séquence ?
J’ai testé cette séquence sur mes hébergeurs (oxyd, ovh ou en local) et ça fonctionne bien.
Le problème est bien entre free et ces données... désolé mais là il faut voir dans le phpinfo() de free pour essayer de contourner le problème.
Courage !
bonjour alors voila, j’ai à priori résolu le problème du formattage du texte en mettant wrap="PHYSICAL" pour le champ texte dans le formulaire html. je te remercie pour tes essais.
Mais je reviens vers toi car je n’arrive pas à tester mes cases à cocher avec ta fonction javascript ’vérification’. J’ai mis le ’name’ des deux cases à cocher à ’sujet[]" afin de pouvoir afficher les résultats choisis avec le code php très simple suivant :
foreach ($sujet as $valeur)
echo "choix du visiteur : ". $valeur.".
" ;
Je dois absolument tester si au moins une case est cochée car sinon j’ai l’erreur suivante (normal vu que la variable est vide) : Warning : Invalid argument supplied for foreach() in /var/www/free.fr/f/9/lodam/test/traitement.php on line 28
et du coup ta fonction javascript me retourne une erreur. Je ne trouve pas, j’ai essayé cela sans succès :
else sujetoption = -1 for (i=0 ; i if(document.formulaire.sujet[i].checked) sujetoption = i if (sujetoption == -1) alert("Veuillez choisir le sujet de votre message svp") ; return false ;
qu’en pense-tu ? merci pour ton aide
bonjour,
merci pour toutes ces précieuses informations.
"Et soudain tout s’éclaire" pourrais-je dire...
Néanmoins, une petite zone d’ombre subsite : la variable "$PHP_SELF#". (cf. msg cité ci dessus)
Que signifie t’elle ?
Bonjour,
la variable c’est juste $PHP_SELF (sans le #) : il signifie à php "prendre la valeur de la page courante".
Le # sert à placer une ancre html.
Amicalement
merci de votre sollicitude. Je suis cependant toujours bloqué, pas moyen de générer mon popup. Cette variable est-elle nécessaire ? Mon code serait : mais ca ne fonctionne pas.... Merci d’être indulgent si ma tentative (en js) est totalement ridicule -_-
cordialement
oups... désolé.
Ci dessous le code en question : a href=\"javascript:void(0)\" onClick=\"window.open(\’popup.html\’,null,\’width=500,height=228, status=no, directories=no, toolbar=no, location=no, menubar=no, scrollbars=no, resizable=no\’p>
Ben c’est logique que ça le fasse pas là
il y a des guillemets qui troublent...
Essaie plutôt de partir du html que j’ai donné plus haut pour Damien.
Bonne soirée