8797 sujets

Développement web côté serveur, CMS

Bonjour à tous.

Je me casse la tête depuis plusieurs heures afin de dégoter un script PHP qui me permettrait de récupérer les données d'un formulaire sur une page html classique hébergé chez OVH.

J'ai bien trouvé le code suivant qui fonctionne lorsqu'il s'agit de récupérer le nom, l'objet et le texte du message mais qui bug dès qu'il s'agit de récupérer l'adresse mail de l'expéditeur

Etant totalement novice en PHP j'ai cru comprendre que le problème se situait au niveau des lignes $mailheader (censée récupérer l'adresse de l'expéditeur et l'afficher dans la boite mail).

Pour rappel mon site est en hébergement mutualisé chez OVH.

Voici la partie, html :


<form id="formulaire" class="float" action="bin/traitement.php" method="post">
   <p><label for="nom">Nom</label><input type="text" name="nom" id="nom"></p>				
   <p><label for="email">E-Mail</label><input type="text" name="email" id="email"></p>
   <p><label for="objet">Objet</label><input type="text" name="objet" id="objet"></p>
   <p><label for="message">Message</label><textarea name="message" cols="20" rows="10"     id="message"></textarea></p>
   <p><input type="submit" name="envoi" value="envoyer" id="submit_btn"/></p>
</form>


et le script PHP


<?php
$ToEmail = 'monadress@gmail.com'; 
$EmailSubject = 'Message'; 
$mailheader = "From: ".$_POST["email"]."\r\n"; 
$mailheader .= "Reply-To: ".$_POST["email"]."\r\n"; 
$mailheader .= "Content-type: text/html; charset=iso-8859-1\r\n"; 
$MESSAGE_BODY = "Name: ".$_POST["nom"]."<br>";
$MESSAGE_BODY .= "Email: ".$_POST["email"]."<br>"; 
$MESSAGE_BODY .= "Objet: ".$_POST["objet"]."<br>"; 
$MESSAGE_BODY .= "Message: ".nl2br($_POST["message"])."<br>"; 
mail($ToEmail, $EmailSubject, $MESSAGE_BODY, $mailheader) or die ("Failure"); 
?>


De plus, il me semble que niveau sécurité et anti-spam on fait mieux que ce script non ? Smiley ohwell

Merci à ceux qui pourront m'aider à résoudre ce problème. Smiley biggrin

edit : en effectuant un enième test, je viens de me rendre compte que le message parvenait bien dans la boîte gmail si je met du texte à la place de l'adresse mail.
Modifié par SYRIACA (19 Aug 2011 - 18:18)
niveau sécurité oui tu peux ajouter une vérification d'adresse mail etc ... mais impossible de vérifier la méthode et le type d'envoi pour ce qui est de 'anti-spam' non tout dépend de la méthode utiliser à avoir ne pas faire d'envoi vers 5000 personnes à la fois ou alors les mettre en ccc etc .... donc des pratique à voir et connaître.

concernant ton code, la partie from d'un header en php ce constitue de la manière suivante
from : blabla <adressemail@mail.com> donc pense à limiter l'adresse avec < et >
Salut ripper et merci de ta réponse à laquelle... je n'ai pas compris grand-chose car je suis totalement novice en ce qui concerne le php.

Tu dis qu'il me faudrait limiter l'adresse... ok, mais concrètement comment j'écris ça dans le code stp ?

Concernant les soupapes de sécurité je me renseigne mais ne cerne pas encore bien tous les concepts plutôt abstrait pour un noob.

Pour le moment j'ai simplement besoin que mon formulaire fonctionne (pour précision, il s'agit d'un form sur un portfolio, page à fréquentation réduite, donc, et bien que je puisse m'en passer je préfère offrir la possibilité de me contacter via formulaire si besoin est..).
Merci malheureusement c'est toujours le même problème: lorsque je rentre une adresse mail dans le champs de formulaire prévu à cet effet le mail ne parvient pas à ma boite gmail.... je m'en arrache les cheveux Smiley smile

les variables $mailheader sont-elles indispensables ???
Modifié par SYRIACA (19 Aug 2011 - 15:47)
jb_gfx a écrit :
Tu as regardé dans ton dossier spam ?


Oui j'ai checké les spams.

En fait le réel problème viens de la récupération de l'adresse email tapée dans le formulaire... j'ai essayé avec la technique des <> de ripper ce qui me donnait ça :

<".$_POST["email"]."><br>";


mais impossible de récupérer l'email de l'expéditeur...
J'ai ENFIN fini par trouvé une solution comme un grand en croisant et remixant différents codes PHP et aussi grace à la documentation officielle PHP.

Voici un script fonctionnel chez OVH pour envoyer un email contenant les informations entrée dans un formulaire html:


<?php
// ADRESSE DESTINATAIRE
$to = 'votreadressemail@exemple.fr';

// OBJET DU MESSAGE 
$subject = "".$_POST["objet"]."";

//CONTENU DU MESSAGE
$message = "Nom: ".$_POST["nom"]."<br>"
			."Message: ".$_POST["message"]."<br>";
			
//HEADER DE L'EMAIL
$headers = "From:"."<{$_POST['email']}>\r\n" . 
        'X-Mailer: PHP/' . phpversion() . "\r\n" . 
        "MIME-Version: 1.0\r\n" . 
        "Content-Type: text/html; charset=utf-8\r\n" . 
        "Content-Transfer-Encoding: 8bit\r\n\r\n"; 

// ENVOI
if(mail($to, $subject, $message, $headers))
{
// MESSAGE AFFICHE SI LE MESSAGE A BIEN ETE ENVOYE
echo 'Le message a bien été envoyé';
}
else
{
// MESSAGE RETOURNE SI LE MESSAGE A BIEN ETE ENVOYE
echo 'Le message n\'a pu être envoyé';
}
?> 



@ ripper : tu m'avais mis sur la bonne voie avec tes chevrons :

$headers = "From:"."<{$_POST['email']}>\r\n" . 


En avant pour la pré-validation du formulaire par javascript (et peut-être un no-refresh en ajax si j'y arrive Smiley smile

Que tout ceux qui ont des commentaires ou des idées pour optimiser ce script sûrement "bancal" s'expriment ! je suis preneur Smiley smile