Formulaire envoi par mail

Par Lima, il y a 11 ans


Bonjour, j'ai un formulaire qui ne marche pas j'arrive pas à trouver le probleme, je debute, je teste en local rien ne marche et chez mon hebergeur c'est pareil, aui ovh il me dit que la version du php de mon compte est php 5.4.
voici mon code php
<?php

//Recuperation des variables
$name=$_POST['name'];
$telephone=$_POST['telephone'];
$email=$_POST['email'];
$adresse=$_POST['adresse'];
$etage=$_POST['etage'];

$ascenceur=$_POST['ascenceur'];
$message=$_POST['message'];

// Envoi du mail normal
//-----------------------
$texte_message .="Bonjour, demande de ramassage remplie sur le site web de .\r\n";
$texte_message .="Notre demande :". $name."\r\n";
"Notre message :" . $message."\r\n";
$texte_message .="------------------------------------------\r\n";
$texte_message .="Notre adresse :" . $adresse."\r\n";
$texte_message .="Téléphone :" . $telephone."\r\n";
$texte_message .="etage :" . $etage."\r\n";
$texte_message .="------------------------------------------\r\n".
$texte_message .="Je vous remercie pour votre confiance et votre visite sur notre site.\r\n";
$texte_message .="A très bientôt.\r\n";

$ok_mail = mail("in@merci.es","Demande venant du site web ","$texte_message");

// Envoi du mail client
//-----------------------

$texte .="Bonjour" . "\r\n";
$texte .="Nous avons bien enregistré votre demande.\r\n";
$texte .="Celle-ci va être réceptionnée.\r\n";
$texte .="\r\n";
$texte .="Je vous remercie .\r\n";
$texte .="A très bientôt sur notre site.\r\n";
$texte .="\r\n";
$texte .="Nhésitez pas à nous contactez directement :\r\n";
$texte .="\r\n";
$texte .="Contacts : in@merci.es \r\n";

$mail_ok = mail("$adresse","Votre demande ",$texte);

if ($ok_mail) {
echo "mail parti";
} else {
echo "mail, pas parti";
}

if ($mail_ok) {
echo "mail client parti";
} else {
echo "mail client pas parti";
}

?>

Merci d'avance pour votre aide.

34 réponses

tleb, il y a 11 ans

qui ne marche pas

pas très précis, erreur/problème exact ?

brokleen, il y a 11 ans

Donne nous l'erreur renvoyé

Lima, il y a 11 ans

Désolé pour le manque de precision, sur ohv, il n'ecrit l'ecran reste vide, ni message enovyé rien, mais en local j'utilise wamp, il affiche ca
( ! ) Notice: Undefined index: name in C:\wamp\www\Formulaire\formulairemail.php on line 5

Call Stack

Time Memory Function Location

1 0.0130 152840 {main}( ) ..\formulairemail.php:0

( ! ) Notice: Undefined index: telephone in C:\wamp\www\Formulaire\formulairemail.php on line 6
Call Stack

Time Memory Function Location

1 0.0130 152840 {main}( ) ..\formulairemail.php:0

( ! ) Notice: Undefined index: email in C:\wamp\www\Formulaire\formulairemail.php on line 7
Call Stack

Time Memory Function Location

1 0.0130 152840 {main}( ) ..\formulairemail.php:0

( ! ) Notice: Undefined index: adresse in C:\wamp\www\Formulaire\formulairemail.php on line 8
Call Stack

Time Memory Function Location

1 0.0130 152840 {main}( ) ..\formulairemail.php:0

( ! ) Notice: Undefined index: etage in C:\wamp\www\Formulaire\formulairemail.php on line 9
Call Stack

Time Memory Function Location

1 0.0130 152840 {main}( ) ..\formulairemail.php:0

( ! ) Notice: Undefined index: ascenceur in C:\wamp\www\Formulaire\formulairemail.php on line 11
Call Stack

Time Memory Function Location

1 0.0130 152840 {main}( ) ..\formulairemail.php:0

( ! ) Notice: Undefined index: message in C:\wamp\www\Formulaire\formulairemail.php on line 12
Call Stack

Time Memory Function Location

1 0.0130 152840 {main}( ) ..\formulairemail.php:0

( ! ) Notice: Undefined variable: texte_message in C:\wamp\www\Formulaire\formulairemail.php on line 19
Call Stack

Time Memory Function Location

1 0.0130 152840 {main}( ) ..\formulairemail.php:0

( ! ) Warning: mail(): Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in C:\wamp\www\Formulaire\formulairemail.php on line 34
Call Stack

Time Memory Function Location

1 0.0130 152840 {main}( ) ..\formulairemail.php:0
2 0.0170 155056 mail ( ) ..\formulairemail.php:34

( ! ) Notice: Undefined variable: texte in C:\wamp\www\Formulaire\formulairemail.php on line 41
Call Stack

Time Memory Function Location

1 0.0130 152840 {main}( ) ..\formulairemail.php:0

( ! ) Warning: mail(): Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in C:\wamp\www\Formulaire\formulairemail.php on line 52
Call Stack

Time Memory Function Location

1 0.0130 152840 {main}( ) ..\formulairemail.php:0
2 1.0631 154952 mail ( ) ..\formulairemail.php:52
mail, pas partimail client pas parti

désole pour la longueur du message§

Lima, il y a 11 ans

Je ne recois rien à partir du serveur. Aussi l'ensemble du site est fait en html et un jsscript.

Merci

brokleen, il y a 11 ans

Regarde les erreurs, toutes tes variables n'éxiste pas. Quand tu as un problème avec php il suffit de regarder les erreurs et les corriger une par une. Il est très clair que tu as fais un copier coller d'un formulaire sur internet. De plus en local il te faut un serveur SMTP pour pouvoir envoyer des emails. Le seul conseil que je peux te donner c'est apprend à développer avec php.

Underscreen, il y a 11 ans

Bonjour

Déjà le message indique que ces variables

$email=$_POST['email']; $adresse=$_POST['adresse']; $etage=$_POST['etage']; $ascenceur=$_POST['ascenceur']; $message=$_POST['message'];

ne sont pas définies soit qu'elle sont vide ce qui fait que tu ne doit pas récupérer correctement les variable en post.
Assures toi que les nom de tes champ (input) soit identique au nom des variable qui sont vide.
Ensuite

$texte_message .="Bonjour, demande de ramassage remplie sur le site web de .\r\n";

quand tu te sers de ".=" ça implique que tu remplie une variable au fur et à mesure. Or pour la remplir il faut d'abord la définir donc remplace cette ligne par

$texte_message ="Bonjour, demande de ramassage remplie sur le site web de .\r\n";

tu fais la même chose pour cette ligne la

$texte .="Bonjour" . "\r\n";

tu enlève le "." laisse juste "=" .

Corriges déjà tout ça et revien avec ton nouveau mesage d'erreur.
Tu n'en aura peut être pas mais je t'avoue que j'ai survolé tous les messages d'erreur donc je peux en avoir zappé.

Bon courage et bonne journée

Lima, il y a 11 ans

Merci pour les conseils. je vais m'y mettre tout de suite

Lima, il y a 11 ans

Re bonsoir, il n'y a pas de changement toujours les memes erreurs. J'ai verifié les noms de variables ligne par ligne et tout est identique.

Merci d'avance

Lartak, il y a 11 ans

Bonsoir.
Question :

  • Est-ce que le code que tu nous montre se situe sur la même page que ton formulaire ?

Si c'est le cas, il te faut faire une condition sur ce code, pour qu'il ne soit interprété que lorsqu'il intercepte des données postées via le formulaire.
Sinon, c'est sur que tu auras toujours ces erreurs, même si les index de $_POST correspondent entre le code PHP et le formulaire.

santo17, il y a 11 ans

Salut Bintou Soumaoro. Stp, pour mieux regler ton problème, il faudra que tu nous montres le code du formulaire qui envoie les informations car apparemment c'est à ce niveau que se situe ton problème à mon avis.

santo17, il y a 11 ans

Pour faire simple, supposons que tu aies deux pages formulaire.html et envoi-mail.php. Dans formulaire.html tu mets :

<form action="envoi-mail.php" method="POST"> //tes input avec l'attribut name ayant pour valeur le nom de la variable à poster.</form>

Puis tu sais quoi faire dans envoi-mail.php.... ;)

Lima, il y a 11 ans

D'accord, voici le code html , pour repondre à la question de Lartak oui, quand je finis de remplir le form et je clique sur envoyer donc c'est l'erreur qui s'affiche sur la page traitement.php

<form method="post" action="formulairemail.php" name="FormMail" enctype="text/plain">
<label>Nom et Prénom:</label>
<input name="name" size="50" type="text" autofocus placeholder="Votre nom complet">

                <label>Téléphone (mobile et/ou fixe):</label>
                <input name="telephone" size="50" type="text" placeholder="Votre numéro téléphone">
                <label>Email:</label>
                <input name="email" size="50" type="email" placeholder="Votre email ">

                <label> Adresse (N˚, Voie): </label>
                <input name="adresse"  type="text" size="50"> <br/>
                Etage <input name="etage" size="2" type="text">

    Ascenceur Oui <input name="ascenceur" value="OUI" type="radio"> Non <input name="ascenceur" value="NON" type="radio">
                <label height="5">A vous la parole :</label>
                <textarea name="message" placeholder="......"></textarea>
                <br> 
                &nbsp; &nbsp; &nbsp;
                <br/>
                                      <br />
    &nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;   <input name="envoi" type="submit" Value="Envoyez" "50">
                                              <br />
                                              </form>
santo17, il y a 11 ans

Il est où le code?

Lima, il y a 11 ans

Underscreen, il y a 11 ans

tu dis traitement.php mais tu valide ton form sur formulairemail.php tu changes bien le bon fichier avec les modifs ?

Lima, il y a 11 ans

C'etait bien evidement traitement mais suite a tes suggestions j'ai renommée les é fichier source pour voir si ca allait avoir une difference. J'ai renommée le dossier contenant, mais c toujours les meme erreurs

santo17, il y a 11 ans

Verifie bien la valeur de l'attribut action du formulaire. C'est formulairemail.php au lieu de traitement.php

Lima, il y a 11 ans

Oui c'est verifié toutes les lignes, si l'erreur s'affiche ce qu'il ya bien un accès sinon il allait mettre not found.

santo17, il y a 11 ans

Ok. Je sais pas toi mais je viens de refaire lemême code et tout est OK

Lima, il y a 11 ans

Ok Santo, est ce tu as fait sur hebergeur particulier

Underscreen, il y a 11 ans

le soucis vient pas de ton hébergeur mais de ton code .

fais un var_dump($_post) voir cequ'il te sort en faisant un die() juste après.
tout en haut de ton fichier de traitement.
S'il ne te met rien c'est que tu n'ai pas sur le bon fichier.

Lima, il y a 11 ans

J'ai une seule ligne maintenant = ( ! ) Parse error: syntax error, unexpected 'die' (T_EXIT) in C:\wamp\www\Formulaire\formulairemail.php on line 3

Lima, il y a 11 ans

J'ai corrigé la ligne et une autre erreur - ( ! ) Parse error: syntax error, unexpected '$name' (T_VARIABLE) in C:\wamp\www\Formulaire\formulairemail.php on line 9 alors qu'il n'ya aucune erreur de nom

Lartak, il y a 11 ans

Comme ceci :

var_dump($_POST); die();

Et montres nous ce qu'il te retourne le var_dump (dans la balise code si possible : </>).

Lima, il y a 11 ans

J'ai mis var_dump($_POST);
die ();
L'erreur qui s'affiche est -
array (sise=0)
empty

Lartak, il y a 11 ans

L'erreur qui s'affiche est -
array (sise=0)
empty

Ce n'est pas une erreur, c'est le résultat/retour du var_dump.
S'il est vide, c'est que tu n'as aucune donnée postée.
Dans ton code de traitement, tu devrais faire une vérification au tout début pour vérifier si des données ont bien été postées, du genre :

if (empty($_POST)) { die('Aucune donnée récupérée !'); }

Le die pendant les tests bien sûr.

Lima, il y a 11 ans

C'est un peu bizarre car j'ai des données à l'interieur, j'ai rempli toutes les cases. Mais toujours le meme message

array (size=0) empty
santo17, il y a 11 ans

T'es là Lima? Juste pour savoir si ton problème est reglé?

Lima, il y a 11 ans

Salut Santo ... Nop c'est oas reglé... je galère je vais refaire le code, le simplié, je verrai ce que ca donnera

Lima, il y a 11 ans

Coucou je reviens vers vous avec la version simple

Mon code html

<fieldset size="150" width="200px"> <legend> NOTRE FORMULAIRE</legend> <form name="FormMail" action="formulairemail.php" method="POST" enctype="text/plain" > <label> Nom Complet </label> <input type="text" name="nom" size="30" autofocus placeholder="Nom svp"> <label> Téléphone </label> <input type="text" name="telephone" size="30" autofocus placeholder="Téléphone svp"> <label> Email </label> <input type="text" name="email" size="30" autofocus placeholder="votre email svp"> <label> Adresse </label> <input type="text" name="adresse" size="30" autofocus placeholder="votre adresse svp"> <label> Etage </label> <input type="text" name="etage" size="10" autofocus placeholder=""> Ascenceur Oui <input name="ascenceur" value="OUI" type="radio"> Non <input name="ascenceur" type="radio" value="NON"> <br/> <textarea name="message" ></textarea> <br/> <input name="envoie" type="submit" value="Envoyez"> </form> </fieldset>

et le php la partie traitement

<?php $nom=$_POST['nom']; $telephone=$_POST['telephone']; $adresse=$_POST['adresse']; $email=$_POST['email']; $etage=$_POST['etage']; $ascenceur=$_POST['ascenceur']; $message=$_POST['message']; $headers = 'From: ' . "\r\n" . 'Reply-To: moi@moi.es' . "\r\n" . 'X-Mailer: PHP/' . phpversion(); "Le voici :" . $message."\r\n"; $texte_message .="Notre adresse :" . $adresse."\r\n"; $texte_message .="Téléphone :" . $telephone."\r\n"; $texte_message .="etage :" . $etage."\r\n"; $texte_message .="A très bientôt.\r\n"; $ok_mail = mail("moi@moi.es","Demande venant du site ","$texte_message"); $mail_ok = $mail("$adresse","Votre demande ",$texte); if ($ok_mail) { echo "mail parti"; } else { echo "mail, pas parti"; } if ($mail_ok) { echo "mail client parti"; } else { echo "mail client pas parti"; } ?>
Lima, il y a 11 ans

Dans le resultat du traitement j'ai l'erreur sur la ligne 3 à 9 et puis 18? Sachant aue j'ai remplie la zone correctement. Et quand je fais un simple teste echo rien ne s'affiche sur le form.

Merci d'avance pour votre aide

Lima, il y a 11 ans

Merci Virax, est ce tu l'as fait sur un seul fichier.

Lima, il y a 11 ans

ca me donne cet erreur, je suppose que cela veut dire que c'est bon.

Warning: mail(): Failed to connect to mailserver at &quot;localhost&quot; port 25, verify your &quot;SMTP&quot; and &quot;smtp_port&quot; setting in php.ini or use ini_set() in C:\wamp\www\Formulaire\formulairemail.php on line 38 Call Stack # Time Memory Function Location 1 0.2050 150736 {main}( ) ..\formulairemail.php:0 2 0.3330 151920 mail ( ) ..\formulairemail.php:38
Lima, il y a 11 ans

TROP TOP mon probleme est resolu .. , merci a vous tous., il ne reste plus qu'a resoudre le probleme de d'accent.