Page 1 sur 1

fonction mail()

Posté : 03 juin 2005, 17:08
par zaltern
Bonjour,

j'ai un soucis avec la fonction mail() je recoit le mail mais les champs sont vides .

pouvez vous m'aider

merci



voici mes scripts:


sur le formulaire:

<form name="formulaire" action="envois-mail.php" method="POST" enctype="text/plain" onSubmit="return verification()" >

<input type="text" name="nom">

<input type="text" name="societe">
<input type="text" name="tel">
<input type="text" name="email">
<input textarea name="message"></textarea>
<input type="submit" name="Submit" value="Envoyer"></td>

--------------------------
la page envois-mail.php

<?php

$adress="[email protected]";
$sujet="Demande renseignements";
$message="Depuis le site http://www.xxxxx.com :\n";
$message.="Nom: {$_POST['nom']}\nSociete: {$_POST['societe']}\n";
$message.="Telephone: {$_POST['telephone']}\n";
$message.="Message: {$_POST['texte']}\n";
$entete="From:{$_POST['email']}\n";
mail($adress, $sujet, $message, $entete);

?>


Voici ce que je recois



Depuis le site http://xxxxxx.com :
Nom:
Societe:
Telephone:
Message:

Posté : 03 juin 2005, 17:17
par mere-teresa
Déjà tu as des champs qui n'ont pas le même nom que les variables.
Ensuite, tu ne concatènes pas dans les règles de l'art les variables au texte.
Et as-tu fais un echo avant de t'envoyer le mail ? Tu verras mieux ce qui se passe...

Code : Tout sélectionner

<form name="formulaire" action="envois-mail.php" method="POST" enctype="text/plain" onSubmit="return verification()" > <input type="text" name="nom"> <input type="text" name="societe"> <input type="text" name="tel"> <input type="text" name="email"> <input textarea name="message"></textarea> <input type="submit" name="Submit" value="Envoyer"></td>
<?php

$adress="[email protected]";
$sujet="Demande renseignements";
$message="Depuis le site http://www.xxxxx.com :\n";
$message.="Nom: ".$_POST['nom']."\nSociete: ".$_POST['societe']."\n";
$message.="Telephone: ".$_POST['tel']."\n";
$message.="Message: ".$_POST['message']."\n";
$entete="From:".$_POST['email']."\n";
//mail($adress, $sujet, $message, $entete);
//tu enverras le mail après
echo "addr".$adress."#sujet: ".$sujet."#message ".$message."# entetes".$entete;
?> 

re

Posté : 03 juin 2005, 23:17
par zaltern
Bonsoir,

Effectivement j'ai fait une coquille avec le champ message.

J'ai essayé ton script et voila ce le texte qui s'affiche:

[email protected]#sujet: Demande renseignements#message Depuis le site http://www.xxxxx.com : Nom: Societe: Telephone: Message: # entetesFrom:

J'ai l'impression que je n'arrive pas à passer ou récupérer mes variables.

Posté : 04 juin 2005, 13:57
par mere-teresa
C'est bien le fichier "envois-mail.php" qui reçoit ça ?
Et que contient la fonction javascript "verification()" ?

Sinon à quoi sert le enctype ?

Posté : 04 juin 2005, 17:14
par zaltern
voici la fonction verification()


function verification()
{ erreur = ""
if(document.formulaire.societe.value =="")
{ erreur += "veuillez indiquer le nom de votre entreprise \n"
}
if(document.formulaire.nom.value =="")
{ erreur += "veuillez indiquer votre nom \n"
}
if(document.formulaire.email.value =="")
{ erreur += "veuillez indiquer votre E-Mail \n"
}
if (erreur == "")
{ document.formulaire.submit()
}
else
{ alert (erreur + "Merci de compléter le formulaire")
};
return false;

};

Pour en le enctype, je ne veux pas utilser le "mailto" je veux passer par le fichier envois-mail.php pour ne pas ouvrir un client messagerie.

Posté : 04 juin 2005, 17:41
par Cyrano
zaltern , tu peux utiliser les boutons [ Code ] ou [ PHP ] quand tu envoies du code, ce n'est agréable pour personne de lire du code comme ça.
Le même indenté (avec quelques corrections de détails):
<script type="text/javascript">
function verification()
{
    erreur = "";
    if(document.formulaire.societe.value =="")
    {
        erreur += "veuillez indiquer le nom de votre entreprise \n";
    }
    if(document.formulaire.nom.value =="")
    {
        erreur += "veuillez indiquer votre nom \n";
    }
    if(document.formulaire.email.value =="")
    {
        erreur += "veuillez indiquer votre E-Mail \n";
    }
    if (erreur == "")
    {
        document.formulaire.submit();
    }
    else
    {
        alert (erreur + "Merci de compléter le formulaire");
    }
    return false;

}
</script>
Pour enctype="text/plain", sais-tu ce que ça signifie ? Le rapport avec le mailto est assez lointain et ta réponse sur la question me laisse songeur
:-k

Posté : 04 juin 2005, 18:57
par zaltern
pourquoi, je ne l'ai tjrs vu qu'avec mailto.
ceci dit, si je suis sur ce forum là c'est que le php c'est pas mon occupation favorite ;-)

Posté : 04 juin 2005, 19:00
par Cyrano
enctype="text/plain" signifie que l'envoi du formulaire se fait en "texte brut" et on le rajoute en effet quand on fait un mailto, mais ce n'est en aucun cas une obligation à cause du mailto, c'est une question de formatage de données. ;)
En PHP, si tu fais un formulaire comprenant par exemple un upload de fichier, il faudra ajouter un enctype="multipart/formdata"

ca progresse mais

Posté : 08 juin 2005, 14:14
par zaltern
C'est laborieux mais ca progresse :D

J'ai bien mis dans le form:

enctype="multipart/formdata"

et mon code est:
$sujet="Demande renseignements";
$message=$_POST['nom'];
$message.=$_POST['societe'];
$message.=$_POST['tel'];
$message.=$_POST['texte'];
$entete=$_POST['email'];
mail("[email protected]",$sujet,$message,$entete);
je recois bien le message.

Par contre si je veux avoir un message avec des retours ligne et que j'écris cela:
$sujet="Demande renseignements";
$message="$_POST['nom']\n";
$message.="$_POST['societe']\n";
$message.="$_POST['tel ']\n";
$message.="$_POST['texte']\n";
$entete="$_POST['email']\n";
mail("[email protected]",$sujet,$message,$entete);
j'ai le message d'erreur suivant:
Parse error: parse error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in xxxxxx on line 43

La ligne 43 étant :
$message="$_POST['nom']\n";

Posté : 08 juin 2005, 14:44
par Cyrano
le même sans l'erreur et un petit ajout:
<?php
$sujet="Demande renseignements";
$message = $_POST['nom'] ."\n";
$message .= $_POST['societe'] ."\n";
$message .= $_POST['tel '] ."\n";
$message .= nl2br($_POST['texte']) ."\n";
$entete = $_POST['email'] ."\n";
mail("[email protected]",$sujet,$message,$entete);
?>
Attention aux concaténations de chaînes de caractères: exemple:

Code : Tout sélectionner

$message .= $_POST['tel '] ."\n"; | | | Ici du PHP ^ici une chaîne de caractères