fonction mail()

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : fonction mail()

par Cyrano » 08 juin 2005, 14:44

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

ca progresse mais

par zaltern » 08 juin 2005, 14:14

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";

par Cyrano » 04 juin 2005, 19:00

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"

par zaltern » 04 juin 2005, 18:57

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 ;-)

par Cyrano » 04 juin 2005, 17:41

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

par zaltern » 04 juin 2005, 17:14

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.

par mere-teresa » 04 juin 2005, 13:57

C'est bien le fichier "envois-mail.php" qui reçoit ça ?
Et que contient la fonction javascript "verification()" ?

Sinon à quoi sert le enctype ?

re

par zaltern » 03 juin 2005, 23:17

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.

par mere-teresa » 03 juin 2005, 17:17

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;
?> 

fonction mail()

par zaltern » 03 juin 2005, 17:08

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: