8791 sujets

Développement web côté serveur, CMS

Salut à tous et bonne reprise si ce n'est déjà fait !

Même pas bronzé mais déjà marron avec un formulaire qui me pose problème et je cale.

Il fonctionne en ligne et en local mais, alors que j'ai un champ à renseigner avec l'adresse
mail de l'expéditeur, les tests me renvoient le mail avec l'adresse du serveur genre :
"trucmuch@start.ovh.net"

Je caaaaaale !!!




<?php
$email_webmaster = "mail@provider.fr";

		if (isset($_POST["envoyer"])){
	
        $etat = "erreur";
		
        if (isset($_POST["email_expediteur"])) {
                 $_POST["email_expediteur"]=trim(stripslashes($_POST["email_expediteur"]));
        }
		if (isset($_POST["Phone"])) {
                 $_POST["Phone"]=trim(stripslashes($_POST["Phone"]));
        }
        if (isset($_POST["titre"])) {
                 $_POST["titre"]=trim(stripslashes($_POST["titre"]));
        }
        if (isset($_POST["message"])) {
                 $_POST["message"]=trim(stripslashes($_POST["message"]));
        }
       
        if (empty($_POST["email_expediteur"])) {
		// il manque l'email de l'expéditeur
                 $erreur=TXT_Erreur1; 
        }
        elseif (!eregi("^[0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\.[a-z]{2,4}$",$_POST["email_expediteur"])){
		// l'adresse e-mail n'est pas valide
                 $erreur=TXT_Erreur2; 
        }
        elseif (empty($_POST["message"])) {
		// le message est vide
                 $erreur=TXT_Erreur3; 
        }
        else {
		
                 $etat="ok";
        }
		else {
		
           $etat="attente";
}

?>

<h3><?php echo TXT_Contact; ?></h3>
<?php
if ($etat!="ok"){

        if ($etat=="erreur"){

        echo "<p><strong>".$erreur."</strong></p>\n";

         }
?>
        <form method="post" action="<?php echo $_SERVER["PHP_SELF"]; ?>">
		
		
        <p><label for="email_expediteur"><?php echo TXT_Mail; ?></label><br />
        <input type="text" size="40" name="email_expediteur" id="email_expediteur" value="<?php
        if (!empty($_POST["email_expediteur"])) {

                echo htmlspecialchars($_POST["email_expediteur"],ENT_QUOTES);
        }
        ?>" />
        </p>
	
        <p><label for="titre"><?php echo TXT_Objet; ?></label><br />
        <input type="text" size="40" name="titre" id="titre" value="<?php
        if (!empty($_POST["titre"])) {

                echo htmlspecialchars($_POST["titre"],ENT_QUOTES);
        }
        ?>" />
        </p>
		
		<p><label for="phone"><?php echo TXT_Phone; ?></label><br />
        <input type="text" size="40" name="phone" id="phone" value="<?php
        if (!empty($_POST["phone"])) {
                echo htmlspecialchars($_POST["phone"],ENT_QUOTES);
        }
        ?>" />
        </p>
		
        <p><label for="message"><?php echo TXT_Message; ?></label><br />
        <textarea name="message" id="message" cols="40" rows="10"><?php
        if (isset($_POST["message"])) {

                echo htmlspecialchars($_POST["message"],ENT_QUOTES);
        }
        ?></textarea>
        </p>
		
        <p><input type="submit" name="envoyer" value="<?php echo TXT_Envoi; ?>" />
        </p>
        </form>
<?php
}
else {

        $entete = "From: ".$_POST["email_expediteur"]." <".$_POST["email_expediteur"].">\n";
		$entete .= "MIME-Version: 1.0\n";
        if (@mail($email_webmaster,$_POST["titre"],$_POST["phone"],$_POST["message"],$_POST["email_expediteur"])){
		
// mail envoyé
                echo TXT_MessOK;
                echo TXT_NewMail;
        }
        else {
// erreur lors de l'envoi du mail
                echo TXT_Problem;
                echo TXT_Retry;
        }
}
?>



Merci de votre aide,
Sam
Modifié par Samiaule (31 Aug 2009 - 14:13)
Salut,

Est-ce que ton SMTP local est configuré dans le php.ini ? En local, travailles-tu sur Linux ou Windows ?
Salut et merci...

Windows...
Et pour le SMTP oui, il est configuré mais le pb se pose en ligne donc...
Et le problème exactement, c'est le nom de l'adresse mail ? Si oui, dans ce cas il te suffit juste de rajouter les bons headers à ta fonction mail lors de son envoi :

$headers = 'From: Ton nom <ton_adresse@ton_domaine.com>'."\r\n";

mail($to, $sujet, $msg, $headers);
Bon, accessoirement je bataille avec l'affichage du code sur le forum...

En fait le problème est simple, un client laisse un message par le biais du formulaire, il saisit
les champs et envoi son message.
Mais à réception, j'ai bien le message mais pas l'adresse de l'expéditeur qui est pourtant
"obligatoire" dans les champs.

A la place, j'ai l'adresse par défaut de l'hébergement du site si c'est en ligne, ou l'adresse par défaut de mon SMTP local si c'est en local avec Wamp...

pfff... Smiley rolleyes
Et on peut voir ton code PHP ? Parce que sans lui, difficile de se prononcer. Tu inverses peut-être sans faire exprès le FROM et le TO.
Ok, rectifié dans le sujet original... navré !



<div id="formulaire">
<?php
$email_webmaster = "mail@provider.fr";
// === traitement des données du formulaire ============================================================
		if (isset($_POST["envoyer"])){
		// le formulaire a été soumis
        $etat = "erreur";
		// Valeur par défaut. Prendra la valeur "ok" s'il n'y a pas d'erreur
		// --- mise en forme des champs saisis dans le formulaire lors de sa soumission ---
        if (isset($_POST["email_expediteur"])) {
                 $_POST["email_expediteur"]=trim(stripslashes($_POST["email_expediteur"]));
        }
		if (isset($_POST["Phone"])) {
                 $_POST["Phone"]=trim(stripslashes($_POST["Phone"]));
        }
        if (isset($_POST["titre"])) {
                 $_POST["titre"]=trim(stripslashes($_POST["titre"]));
        }
        if (isset($_POST["message"])) {
                 $_POST["message"]=trim(stripslashes($_POST["message"]));
        }
        // --- test de la validité des champs saisis ---
        if (empty($_POST["email_expediteur"])) {
		// il manque l'email de l'expéditeur
                 $erreur=TXT_Erreur1; 
        }
        elseif (!eregi("^[0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\.[a-z]{2,4}$",$_POST["email_expediteur"])){
		// l'adresse e-mail n'est pas valide
                 $erreur=TXT_Erreur2; 
        }
        elseif (empty($_POST["message"])) {
		// le message est vide
                 $erreur=TXT_Erreur3; 
        }
        else {
		// --- tous les champs sont correctement remplis: on pourra envoyer le mail ---
                 $etat="ok";
        }
}
		else {
		// --- le formulaire n'a pas été soumis ---
           $etat="attente";
}
// === fin de traitement des données du formulaire =======================================================
?>

<h3><?php echo TXT_Contact; ?></h3>
<?php
if ($etat!="ok"){
// le formulaire n'a pas été soumis, ou soumis avec une erreur
        if ($etat=="erreur"){
//le formulaire a été soumis avec une erreur
        echo "<p><strong>".$erreur."</strong></p>\n";
// afficher le message d'erreur
         }
?>
        <form method="post" action="<?php echo $_SERVER["PHP_SELF"]; ?>">
		
		
        <p><label for="email_expediteur"><?php echo TXT_Mail; ?></label><br />
        <input type="text" size="40" name="email_expediteur" id="email_expediteur" value="<?php
        if (!empty($_POST["email_expediteur"])) {
// l'adresse email de l'expéditeur a été saisie: la réafficher
                echo htmlspecialchars($_POST["email_expediteur"],ENT_QUOTES);
        }
        ?>" />
        </p>
	
        <p><label for="titre"><?php echo TXT_Objet; ?></label><br />
        <input type="text" size="40" name="titre" id="titre" value="<?php
        if (!empty($_POST["titre"])) {
// le titre du message a été saisi: le réafficher
                echo htmlspecialchars($_POST["titre"],ENT_QUOTES);
        }
        ?>" />
        </p>
		
		<p><label for="phone"><?php echo TXT_Phone; ?></label><br />
        <input type="text" size="40" name="phone" id="phone" value="<?php
        if (!empty($_POST["phone"])) {
                echo htmlspecialchars($_POST["phone"],ENT_QUOTES);
        }
        ?>" />
        </p>
		
        <p><label for="message"><?php echo TXT_Message; ?></label><br />
        <textarea name="message" id="message" cols="40" rows="10"><?php
        if (isset($_POST["message"])) {
// le message a été saisi: le réafficher
                echo htmlspecialchars($_POST["message"],ENT_QUOTES);
        }
        ?></textarea>
        </p>
		
        <p><input type="submit" name="envoyer" value="<?php echo TXT_Envoi; ?>" />
        </p>
        </form>
<?php
}
else {
// le formulaire a été soumis sans erreur, on envoie le mail
        $entete = "From: ".$_POST["email_expediteur"]." <".$_POST["email_expediteur"].">\n";
		$entete .= "MIME-Version: 1.0\n";
        if (@mail($email_webmaster,$_POST["titre"],$_POST["phone"],$_POST["message"],$_POST["email_expediteur"])){
		
// mail envoyé
                echo TXT_MessOK;
                echo TXT_NewMail;
        }
        else {
// erreur lors de l'envoi du mail
                echo TXT_Problem;
                echo TXT_Retry;
        }
}
?>


Modifié par Samiaule (31 Aug 2009 - 10:08)
A vue de nez je ne vois pas de problème pourtant ... Essaie soit d'enlever le type mime des headers qui ne sert pas à grand chose ici, soit de rajouter le \r devant le \n, soit de faire les deux manipulations.
Bon, j'ai modifié :

<?php
}
else {
// le formulaire a été soumis sans erreur, on envoie le mail
        $entete = "From: ".$_POST["email_expediteur"]." <".$_POST["email_expediteur"].">\r\n";
        if (mail($email_webmaster,$_POST["email_expediteur"],$_POST["phone"],$_POST["titre"],$_POST["message"])){
		
// mail envoyé
                echo TXT_MessOK;
                echo TXT_NewMail;
        }
        else {
// erreur lors de l'envoi du mail
                echo TXT_Problem;
                echo TXT_Retry;
        }
}
?>



Mais rien ne change... j'imagine qu'il faut que je men penche vers une modif de php.ini ???
Des avis ?

Merci en tout cas Smiley cligne
Alors là je cale... j'ai bien tenté de faire diverses manip' mais en vain...
Je suis donc toujours partant pour accueillir un cerveau lumineux et aguerri pour solver mon problème ! Smiley biggol
J'en doute car j'ai d'autres sites chez eux dont les formulaires sont quasi identiques et fonctionnent... mais tu as raison, je viens d'envoyer un mail au manager au cas où...
Salut,

ben je vois pas trop comment ça pourrait marcher avec ce code :
a écrit :
$entete = "From: ".$_POST["email_expediteur"]." <".$_POST["email_expediteur"].">\n";
$entete .= "MIME-Version: 1.0\n";
if (@mail($email_webmaster,$_POST["titre"],$_POST["phone"],$_POST["message"],$_POST["email_expediteur"])){
A tester :
$entete = "From: ".$_POST["email_expediteur"]." <".$_POST["email_expediteur"].">\n"; 
$msg = 'Tel : '.$_POST["phone"]."\n".'Message : '.$_POST["message"]."\n".'Email : '.$_POST["email_expediteur"];
if (@mail($email_webmaster,$_POST["titre"],$msg,$entete)){ 
Heyoan a écrit :
ben je vois pas trop comment ça pourrait marcher avec ce code

Je suis complètement aveugle pour avoir loupé ça ... Smiley ohwell
Agylus a écrit :
Je suis complètement aveugle pour avoir loupé ça ...
Bof... c'est lundi ! Et pi moi je suis en vacances ! Smiley langue
Heyoan a écrit :
Salut,

ben je vois pas trop comment ça pourrait marcher avec ce code : $entete = "From: ".$_POST["email_expediteur"]." <".$_POST["email_expediteur"].">\n";
$entete .= "MIME-Version: 1.0\n";
if (@mail($email_webmaster,$_POST["titre"],$_POST["phone"],$_POST["message"],$_POST["email_expediteur"])){
A tester :
$entete = "From: ".$_POST["email_expediteur"]." <".$_POST["email_expediteur"].">\n"; 
$msg = 'Tel : '.$_POST["phone"]."\n".'Message : '.$_POST["message"]."\n".'Email : '.$_POST["email_expediteur"];
if (@mail($email_webmaster,$_POST["titre"],$msg,$entete)){ 



Heu... y'a moyen de t'uploader une bière de garde ou un jus de pommes bio quelques part ???

C'est nickel, merci !!! J'avais déjà perdu beaucoup (trop) de temps avec ça !
Au bout d'un moment ça devient dur de prendre le recule nécessaire pour résoudre ce genre de choses.
Smiley biggol

@+