> Tous les forums > Forum des Webmasters
 Fonction mail()
Ajouter un message à la discussion
Page : [1] 
Page 1 sur 1
chester80
  Posté le 11/08/2006 @ 17:01 
Aller en bas de la page 
Petit astucien
Bonjour à tous, Bojour à tous, Je désire faire sur mon site une page contact.php Voici ce que j'ai codé: Contact.php:
<?php //----Etape1----- //Si un message est envoyé, on l'enregistre //----------------- if (!empty($_POST['nom']) AND !empty($_POST['prenom']) AND !empty($_POST['message']) AND !empty($_POST['mail']) AND (trim($nom) != '') AND (trim($prenom) != '') AND (trim($mail) != '') AND (trim($message) != '')) { $nom=htmlentities($_POST['nom'], ENT_QUOTES);//On utilise htlmentities par mesure desécurité.UO $prenom=htmlentities($_POST['prenom'], ENT_QUOTES); $mail=htmlentities($_POST['mail'], ENT_QUOTES); $message=htmlentities($_POST['message'], ENT_QUOTES);//De même pour le message $message=nl2br($message);//Pour le message, comme on utilise un textarea, il faut remplacer les Entrées par des <br/> //On peut enfin enregistrer mysql_query("INSERT INTO contact VALUES('', '" . $nom . "', '".$prenom."', '" . $message . "', '". $mail ."')"); include("contact/contactrep.php"); } Else { include("contact/contactnon.php"); } //----Etape 2----- //Envoyer vers mail //----------------- $to='alonzo80@hotmail.com' mail($to,$_POST['sujet'], $_POST['message']); ?>
Avec ceci normalement je dois recevoir des mails lorsque quelqu'un a poster un message. Avec l'adresse alonzo80@hotmail.com sa fonctione trés bien Avec l'adresse geoffrey.carpentier@wanadoo.fr sa ne fonctionne pas du tous Avec l'adresse scmoreuil@free.fr sa ne fonctionne pas mais je recois ce mail plus tard dans la journée avec une pièce jointe et dedans ya le mail que je devrai recevoir:
Citation : De:Mail Delivery System Sujet:Undelivered Mail Returned to Sender This is the Postfix program at host perso0.free.fr. I'm sorry to have to inform you that your message could not be be delivered to one or more recipients. It's attached below. For further assistance, please send mail to <postmaster> If you do so, please include this problem report. You can delete your own text from the attached returned message. The Postfix program <scmoreuil@free.fr>: delivery temporarily suspended: connect to mx2.free.fr[212.27.42.43]: Connection refused
Pourquoi sa fonctionne sur certaine adrese et pas sur d'autre?? merci d'avance Edité le 11/08/2006
Publicité
koala01
 Posté le 13/08/2006 à 23:29 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien
Salut, DÚjÓ, meme si ce n'est qu'un dÚtail (mais qui t'Úvitera sans doute pas mal de dÚconvenue), tu as pris la peine de sÚcuriser le rÚsultat de ton formulaire pour l'insÚrer dans une base de donnÚes, c'est dÚjÓ pas mal, mais tu "prend le risque" de t'envoyer le formulaire sans aucune sÚcurisationà Pourquoi diable, ne pas profiter de ce que tu as quand meme une "certaine" sÚcurisation sous la forme des variables $nom, $prenom, $mail et $message, ne pas utiliser ces variables lÓ lors de l'envoi de l'E-mail [question] Au passage: la concatÚnation de chaines prend beaucoup plus de ressources que la simple Úvalutation de valeurs au sein d'une chaineà Et, comble de bonheur, les guillemets doubles (double quotes ") permettent l'Úvaluation de variablesà Il serait intÚressant de modifier ton
mysql_query("INSERT INTO contact VALUES('', '" . $nom . "', '".$prenom."', '" . $message . "', '". $mail ."')");
en
mysql_query("INSERT INTO contact VALUES('', '$nom ', '$prenom', '$message', '$mail')");
voire, mÛme (je chicane, lÓ hein [clindoeil] [rougir]) en
$sql="INSERT INTO contact VALUES('', '$nom', '$prenom', '$message', '$mail')"; mysql_query($sql);
ou, fin du fin;, en
$sql=sprintf("INSERT INTO contact VALUES('', '%s', '%s', '%s', '%s')",$nom,$prenom,$message,$mail); mysql_query($sql);
Au passage (bis), prend tu la prÚcaution de vÚrifier que l'adresse introduite soit, au minimum au format normal d'une adresse Email [question] (une arobase @ qui ne soit ni en premiÞre position ni en derniÞre position, et un point . APRES l'arobase, mais ni tout de suite aprÞs, ni en derniÞre position)

Modifié par koala01 le 13/08/2006 23:30
chester80
 Posté le 13/08/2006 à 23:33 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien
d'accord merci. mais comment je dois faire pour sÚcurisÚ l'envoide mail?? merci d'avance
koala01
 Posté le 14/08/2006 à 00:19 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien
Il s'agirait, dans un premier temps, de sÚcuriser le contenu de $_POST[sujet] exactement de la meme manÞre que ce qui est fait pour le contenu de $_POST[message] (dans une variable $sujet, par exemple [clindoeil]) Une fois cette sÚcurisation effectuÚe, au lieu d'utiliser le contenu des champs de formulaires sous la forme (actuelle) de
mail($to,$_POST['sujet'], $_POST['message']);
utilise les variables qui contiennent ces valeurs "sÚcurisÚes" sous la forme de
mail($to,$sujet,$message)
Il semblerait en outre judicieux de rajouter un champs "sujet" dans ta table et d'insÚrer la variable sÚcurisÚe sujet en meme temps que le reste de l'enregistrement Enfin, selon moi, du moins, l'envoi de l'E-mail et l'insertion dans ta table ne doivent tous les deux avoir lieu que si le formulaire a ÚtÚ correctement rempli… La fonction mail serait donc bien plus Ó sa place juste aprÞs l'inclusion de contact/contactrep.php, dans la partie "if" de ton test [clindoeil] Voici donc ton code avec les modifications telles que je te le conseillerais…
<?php //----Etape1----- //Si un message est envoyÚ, on l'enregistre et on envoie l'E-mail //----------------- if (!empty($_POST['nom']) AND !empty($_POST['prenom']) AND !empty($_POST['message']) AND !empty($_POST['mail']) AND (trim($nom) != '') AND (trim($prenom) != '') AND (trim($mail) != '') AND (trim($message) != '')) { $mail=$_POST['mail'], ENT_QUOTES; $nom=htmlentities($_POST['nom'], ENT_QUOTES);//On utilise htlmentities par mesure desÚcuritÚ.UO $prenom=htmlentities($_POST['prenom'], ENT_QUOTES); $message=htmlentities($_POST['message'], ENT_QUOTES);//De mÛme pour le message $sujet=htmlentities($_POST['sujet'], ENT_QUOTES);//et pour le sujet $message=nl2br($message);//Pour le message, comme on utilise un textarea, il faut remplacer les EntrÚes par des <br/> //on ne peut enregistrer que si l'adresse E-mail est au bon format //les expression rÚguliÞres viennent Ó notre secours sur ce coup lÓ if(!ereg ("^[^@ ]+@[^@ ]+\.[^@ \.]+$", $mail)) { //On peut enfin enregistrer $sql=sprintf("INSERT INTO contact SET(`nom`,`prenom`,`sujet`,`message`,`mail`) VALUES('%s', '%s', '%s', '%s', '%s')",$nom,$prenom,$sujet,$message,$mail); mysql_query($sql); include("contact/contactrep.php"); //on envoie l'email $to='alonzo80@hotmail.com' mail($to,$sujet, $message); } } else { include("contact/contactnon.php"); }
(en ayant rajoutÚ un champs "sujet"(varchar 255) dans la table) Cela ne rÚsoudra peut etre pas le problÞme, mais, au moins, tu n'enverra plus d'E-mail si tout n'est pas correctement rempli, et ton code sera rÚellement sÚcurisÚ (ou du moins beaucoup plus qu'actuellement), et plus "seulement Ó moitiÚ"[clindoeil]
Page : [1] 
Page 1 sur 1

Vous devez être connecté pour participer à la discussion.
Cliquez ici pour vous identifier.

Vous n'avez pas de compte ? Créez-en un gratuitement !
Recevoir PC Astuces par e-mail


La Lettre quotidienne +226 000 inscrits
Avec l'actu, des logiciels, des applis, des astuces, des bons plans, ...

Les bonnes affaires
Une fois par semaine, un récap des meilleurs offres.

Les fonds d'écran
De jolies photos pour personnaliser votre bureau. Une fois par semaine.

Les nouveaux Bons Plans
Des notifications pour ne pas rater les bons plans publiés sur le site.

Les bons plans du moment PC Astuces

Tous les Bons Plans
Grosses promotions pour le Super Sale chez Geekbuying
-70% -1 -%
@Geekbuying
Mini PC NiPoGi H1 (Ryzen 7 6800HU, 16 Go RAM, SSD 512 Go, Radeon 680M, Windows 11 Pro)
333,48 € 429 € -22%
@Amazon
Déshumidificateur Solayce PD12R-02EE (12L/24h, réservoir 3.2L, 35m²)
95 € 159 € -40%
@Geekbuying
Bureau électrique réglable en hauteur ACGAM JSZ-3 140x60 cm (2 moteurs, 62 à 127 cm, 30 mm/s, supporte 120 kg)
239,99 € 300 € -20%
@Geekbuying
Casque sans fil à réduction de bruit Sony WH-1000XM5 (Hi-Res Audio, Bluetooth/NFC)
246,61 € 300 € -18%
@Geekbuying
Console de jeux retro ANBERNIC RG35XX 64 Go (5000 jeux Gameboy, GC, GBA, PS1, Megadrive, SNES) à 45 €
52,99 € 62 € -15%
@Geekbuying

Sujets relatifs
fonction mail() et wamp
hebergeur fonction mail
Fonction Mail PHP - Mails non transmis
Fonction Mailto limité a un certain nombre de mail
fonction mail avec piece jointe
fonction PHP mail()
une petite fonction de mail
la fonction "répondre" d'un mail ne fonctionne pas
itineweb et fonction mail()
fonction mail PHP chez free ? [résolu]
Plus de sujets relatifs à Fonction mail()
 > Tous les forums > Forum Forum des Webmasters