FORMULAIRE DE CONTACT AVEC MASQUE DE SAISI, RECUPERATION DONNÉES, ENVOI MAIL DES

cs_canibale Messages postés 33 Date d'inscription mardi 23 mai 2006 Statut Membre Dernière intervention 28 février 2009 - 11 janv. 2008 à 17:13
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 - 2 nov. 2018 à 16:28
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/45392-formulaire-de-contact-avec-masque-de-saisi-recuperation-donnees-envoi-mail-des-donnees-mail-confirmation-de-contact

jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 344
2 nov. 2018 à 16:28
Bonjour,
Si tu as un souci... le mieux c'est d'ouvrir directement une question sur le forum.
Quoi qu'il en soit, si tu es en "local" sur ton ordi (et non sur un serveur...) la fonction "mail" ne fonctionnera qu'a condition d'avoir installé un logiciel tel que fakeSendmail et configuré le serveur SMTP.
Dans le cas contraire, tu peux aussi utiliser la class PHP : PhpMailer et utiliser ton compte de messagerie (comme gmail par exemple) pour générer l'envoi des messages.
Bonjour,
je vous remercie pour ce code source que vous avez partagé avec nous.
je suis débutant sur php, j'ai un problème je voulais tester l'envoi d'email, donc j'ai remplacé ce qu'il faut, mais malheureusement ça ne marche pas.
j'envoi le formulaire, j'ai le message de confirmation que c'est ok, mais sur ma boite émail, je ne reçois rien, je ne sais pas ce qui cloche??..
Merci de m'aider
cs_rollano Messages postés 1 Date d'inscription lundi 31 décembre 2012 Statut Membre Dernière intervention 14 mai 2013
14 mai 2013 à 04:00
franchement je mets un 10 / 10.
ce code est magnifique, après a chacun de l'adapté a ces besoins
joone Messages postés 1 Date d'inscription mercredi 2 février 2005 Statut Membre Dernière intervention 12 janvier 2012
12 janv. 2012 à 02:14
Franchement, merci pour ce super code, moi j'ai enlevé tout les champs qui m'arrangeaient pas sans problème et j'ai apporté quelques modifs, par exemple dans le $msg_ok jai ajouté les balises html pour que cette page ressemble aux autres pages de mon site et que le sujet entré dans le formulaire soit l'objet de mon mail et ça fonctionne très bien. Et merci aux autres aussi j'ai tenu compte des remarques et modifié le code en conséquence. Enfin je suis ni programmeuse ni développeuse mais j'ai vraiment pu me débrouillé facilement alors encore merci mille fois.
sof34 Messages postés 16 Date d'inscription vendredi 6 décembre 2002 Statut Membre Dernière intervention 2 septembre 2010 1
29 nov. 2008 à 13:47
OOps ... allez 2 étoiles
sof34 Messages postés 16 Date d'inscription vendredi 6 décembre 2002 Statut Membre Dernière intervention 2 septembre 2010 1
29 nov. 2008 à 13:46
Dsl mais j'ai pas pu m'empêcher :

En conclusion vous dites : "En conclusion, je dirais qu'on peut vraiment faire des choses étonnantes avec les languages html, javascript et php quand on les combinne (et qu'on arrive à les faire vivre ensemble... :-)."

Youpiii

Merci pour cette découverte illuminée. Heureusement que des gens comme vous parcourent le web et remarquent le travail des autres, pour constater des choses aussi... évidentes ! et sur Javascript.fr qui plus est...

Moi hier j'ai découvert qu'en pétant dans l'eau ça faisait des bulles...

Mais en faisant qq recherches j'ai vu que Archimède l'avais déjà fait connaitre. Oui "La poussée"...

Donc, moi je dirait, en conclusion, que péter dans l'eau, ça fait des bulles et c'est rigolo.

Bon je me reprend : En conclusion, il faut pas hésiter à se renseigner pour essayer de pousser vers le haut cette communauté plutôt que de rebalancer des sources vues, vues, vues, et revues. Sinon, préférez poster sur jedebuteenprogrammationetjepensequeoutlemondestcommemoi.com. Au moins les gens qui pomperons vos sources, vos dangereuses sources, ne pourrons s'en prendre qu'a eux même. "Supositoire" a pompée la source sans corriger quoique ce soit.

La source PHP je l'ai trouvée ici il y a plus de 3 ans...Donc, svp, citez vos sources, sinon au moins là ou vous l'avez pompée.

Et enfin, si ça n'est juste que pour voir votre nom dans un forum, faites comme moi, préférez faire des remarques peu constructives ! c'est pareil, ça sert à rien.

PS : Je me permet pour la forme de vous rappeler la charte de bonne conduite, que j'en suis sur vous n'avez pas lue : http://www.javascriptfr.com/reglement.aspx

Ça soulage...
h405 Messages postés 7 Date d'inscription vendredi 27 juin 2008 Statut Membre Dernière intervention 28 février 2011
28 juil. 2008 à 21:07
simple
T3cHn0_93 Messages postés 3 Date d'inscription jeudi 10 mars 2005 Statut Membre Dernière intervention 9 mars 2008
9 mars 2008 à 01:27
Merci beaucoup ce code m'a beaucoup servit !
Arto_8000 Messages postés 1044 Date d'inscription lundi 7 mars 2005 Statut Membre Dernière intervention 13 juillet 2010 7
17 janv. 2008 à 15:09
Si tu veux faire ton code vraiment pour qu'il y a le moins de problèmes possible, il faut que tu testes tous tes valeurs avec isset et non empty.

if (!isset($_POST['val1']) || !isset($_POST['val2']) || ...)
{
die("Les valeurs n'ont pas tous été envoyé au serveur."); //OU header("Location: formulaire.php");
}

Ensuite tu poursuits avec ton code et tes autres vérifications. Sinon quelqu'un qui fait juste charger la page sans faire de post se voit afficher une tonne d'erreur et c'est pas très invitant.

Côté sécurité ton code permet de modifier n'importe quelle variable dans le code au moment où ils sont traité. Si j'envoie une autre valeur POST à ton formulaire qui s'appele msg_ok et que je mets la valeur "<script>alert('XSS')</script>", le contenu va être afficher plus loin dans la page créant une attaque XSS.

Pour le contrer ? Ne pas l'utiliser, tes valeurs sont déjà dans le array POST.
fifiriri123 Messages postés 4 Date d'inscription vendredi 17 décembre 2004 Statut Membre Dernière intervention 17 janvier 2008
17 janv. 2008 à 14:03
Merci pour vos observations. J'ai modifié le code pour le rendre plus lisible et correct au niveau des balises.

Arto_8000 a écrit :
Côté serveur tu ne testes pas toutes les valeurs et ceux que tu testes sont mal testé. Il faut toujours faire un isset sur tes valeurs POST avant de les utiliser, sinon je peux remplir tes fichiers de logs de ton serveur en quelques minutes.

Côté sécurité il y a un truc qui m'a fait vraiment peur (anciennes lignes 470 à 472), pour ton script tout seul il n'y a pas trop de problème, mais si je l'intègre dans un site, c'est pas super côté sécurité et ça ouvre des portes que l'on n'aimerait pas trop ouvrir.

Côté serveur : je peux ajouter les autres valeurs pour les tester mais tu dis qu'elles sont mal testées, que je dois faire un isset sur mes valeurs POST. Peux-tu me dire comment procéder sur une ou deux valeurs et je ferais le reste.

Côté sécurité: tu parles d'une partie de code qui se trouvaient lignes 470à472 qui t'as fait peur. Quelles modif je pourrais faire pour vraiment protéger mon site.

Merci d'avance.
fifiriri123 Messages postés 4 Date d'inscription vendredi 17 décembre 2004 Statut Membre Dernière intervention 17 janvier 2008
16 janv. 2008 à 10:00
j'aprécie des précisions arto_8000. Je suis développeur mais pas programmeur pur. Je me suis mal exprimé. Le code est certes pas tiré de nul par ...il résulte de multiples adaptations quej'ai fait pour le rendre viable avec l'ensemble. Ayant comme je l'ai dit passé du temps et obtenu des renseignements précieux gràce au tutoriel ou forum sur internet, je souhaite en faire profité d'autre qui comme moi ne sont pas programmeur.

Merci Nickadelle pour l'explication simple sur les balise er les quotes, je vais adapter le code en conséquence.
nickadele Messages postés 1251 Date d'inscription mercredi 7 août 2002 Statut Modérateur Dernière intervention 10 avril 2013
15 janv. 2008 à 14:20
Pour la fermeture des balises via "/" :
Simple balise ex input :
Double balise ex p : mon texte



Pour les quotes, tu fais ceci :
<table width="597" border=0 cellpadding=0 cellspacing=0>...

Ceci est mieux :
<table width="597" border="0" cellpadding="0" cellspacing="0">...

Ou ceci :
<table width='597' border='0' cellpadding='0' cellspacing='0'>...

Pour le reste je rejoind l'avis d'Arto_8000 et de XtremDuke !
Arto_8000 Messages postés 1044 Date d'inscription lundi 7 mars 2005 Statut Membre Dernière intervention 13 juillet 2010 7
15 janv. 2008 à 03:16
Le code que je te montres ce n'est qu'une idée de structure qui ne fonctionnera pas si tu fais seulement du copié-collé. C'était seulement pour que tu l'adaptes pour ton code. Si tu ne fais pas de dévellopement, recoder modulaire te dis probablement rien, donc ne change rien à tout ça. D'ailleurs si tu ne fais pas de dévellopement, d'où ce code sort-il ? D'un chapeau ?
fifiriri123 Messages postés 4 Date d'inscription vendredi 17 décembre 2004 Statut Membre Dernière intervention 17 janvier 2008
14 janv. 2008 à 16:13
Comme je l'ai dit dans la 1ere phrase de ma source, je ne suis malheureusement pas développeur.
Merci arto_8000 et xtremduke pour vos remarques.

J'aimerais qu'elles servent... c'est à dire :
- arto_8000 : vous me conseillez de remplacer ma fonction valider par votre code et d'ajouter la funtion (id) pour plus de simpliciter dans la lecture des champs. Si tu voulais dire cela, je vais rééditer le code pour que cela serve à d'autres.

- xtremduke : dans la partie html/java, je n'ai pas fermé toutes les balises. tu parles desquelles ? ] ou ) ou // ou }

Merci à tous.
XtremDuke Messages postés 626 Date d'inscription samedi 28 septembre 2002 Statut Membre Dernière intervention 18 mai 2009 4
14 janv. 2008 à 15:39
Hélas j'approuve le commentaire de Arto_8000. Ta source ressemble à une serie de copié/collé de scripts trouvés à droite et à gauche. C'est très uniforme et on a l'impression que rien en vient de toi.
Même si la partie PHP n'est pas parfaite, ce n'est pas cette couche qui m'a choqués le plus mais plutôt la partie html/javascript : tu fermes tes balises une fois sur deux. Il en va de même pour les valeurs de tes attributs qui sont entourées par des quotes de manière aléatoire.
Et quitte à re-créer la roue, autant le faire au goût du jour : aucune CSS, 90% des attributs sont dépréciés tout comme le mode d'accès aux éléments de ta page (js).

J'espère que tu prendras ces remarques du point de vue constructif et non comme une attaque personnelle.
cs_supositoire Messages postés 5 Date d'inscription mercredi 30 août 2006 Statut Membre Dernière intervention 19 février 2008
13 janv. 2008 à 13:47
Trop cool je l'ai adopté pour mon site! www.sectionhp.com/contact/
Arto_8000 Messages postés 1044 Date d'inscription lundi 7 mars 2005 Statut Membre Dernière intervention 13 juillet 2010 7
12 janv. 2008 à 17:29
C'est peut-être bien pour ton cas en particulier, mais si je veux rajouter un champs, en modifier ou enlever c'est plus long à modifier parce que le code est éparpiller un peu partout et aucunement divisé en couche. Idéalement ce serait de recoder ta source beaucoup plus modulaire et faire tes fonctions plus générique. Aussi ton traitement des valeurs côté client est inutile s'il y a en a aucun côté serveur. Je désactive Javascript et je peux envoyer n'importe quoi au serveur. Faut pas se fier qu'à Javascript. Côté serveur tu ne testes pas toutes les valeurs et ceux que tu testes sont mal testé. Il faut toujours faire un isset sur tes valeurs POST avant de les utiliser, sinon je peux remplir tes fichiers de logs de ton serveur en quelques minutes. Côté sécurité il y a un truc qui m'a fait vraiment peur (ligne 470 à 472), pour ton script tout seul il n'y a pas trop de problème, mais si je l'intègre dans un site, c'est pas super côté sécurité et ça ouvre des portes que l'on n'aimerait pas trop ouvrir. Oublie pas que l'on peut envoyer n'importe quoi à ce script. Aussi comme j'en parlais plus haut pour tes fonctions qui ne sont pas générique, ta fonction valider est un bon exemple. Avec quelque chose de codé plus modulaire tu aurais pu tout simplement parcourir la liste des champs et faire les tests necéssaires. Ça donnerait quelque chose comme ceci qui est beaucoup plus facilement modifiable et portable :

function $(id)
{
return document.getElementById(id);
}

function testDate(txt)
{
//on test pour savoir si la date est valide
}

function testText(txt)
{
//on test pour savoir si le texte est valide
}

function valider ()
{
var listeChamp = [{id : "champ1", type : "Date"}, {id : "champ2", type : "Text"];
var erreurFound = false;

for (i=0; i<listeChamp.length; i++)
{
if (eval("test" + listeChamp[i].type + "(" + $(listeChamp[i].id) + ");"))
{
$(listeChamp[i].id).style.backgroundColor = "#ff0000";
erreurFound = true;
}
}

if (erreurFound)
{
alert("Des erreurs ont été trouvé, les champs ont été mis en rouge.");
}
}
cs_canibale Messages postés 33 Date d'inscription mardi 23 mai 2006 Statut Membre Dernière intervention 28 février 2009
11 janv. 2008 à 17:13
Je n'ai pas regardé encore le code en détail mais le résultat à l'air sympa, Bon travail

PS : crois(s)ement ?
Rejoignez-nous