Problème d'envoi de message sur un site

Fermé
rikuZX93 Messages postés 4 Date d'inscription mardi 10 février 2015 Statut Membre Dernière intervention 12 février 2015 - 10 févr. 2015 à 10:23
 Utilisateur anonyme - 12 févr. 2015 à 13:33
Bonjour,

j'ai un problème sur ce site http://www.ncicompany.fr/contact.html quand j'ai rempli toutes les cases et qu'on appui sur envoyer, ça m'affiche :

"Erreur. Les champs suivants doivent être obligatoirement remplis :

Votre email
Votre message"

et je ne sais pas quoi faire pour résoudre ce problème, je connais rien du tout en php. Je vous donne le code HTML et le php.

HTML de la page contact :


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>NCI company</title>
<link href="style.css" rel="stylesheet" type="text/css">
</head>

<body>
<div id ="conteneur">
<header>

<div class ="langue">
<div class="france">
<a href="contact.html"><img src="images/drapeau/france.jpg"></a>
</div>

<div class="royaume-uni">
<a href="contact_en.html"><img src="images/drapeau/royaume-uni.jpg"></a>
</div>
</div>

<img src="images/logo_hd.jpg">
<a href="index.html"><img src="images/accueil.jpg" class="accueil"/></a>
<a href="services.html" ><img src="images/service.jpg" class="accueil"/></a>
<a href="apropos.html"><img src="images/a-propos.jpg" class="accueil"/></a>
<a href="contact.html"><img src="images/contact.jpg" class="accueil"/></a>
</header>

<form method="post" action="contact.php" method="post" onSubmit="return validate_form (this)" enctype="multipart/form-data">


<p class="contact">
<strong>Nous contacter</strong>
<br>
<br>
NCI company
<br>
9 avenue Michelet 93400 Saint Ouen France
<br>
Tel :+33(0)149 480 375
<br>
Fax :+33 (0)972 148 693
<br>
email : xavier@ncicompany.fr</p>

<div id="formulaire">


<form method="post" action="contact.php" method="post" onSubmit="return validate_form (this)" enctype="multipart/form-data">
<input type="hidden" value="fr" />
<p>
<label for="nom">Nom</label> : <input type="text" name="nom" id="nom"/>
</p>

<p>
<label for="prenom">Prénom*</label> : <input type="text" name="prenom" id="prenom" required />
</p>

<p>
<label for="e-mail">E-mail</label> : <input type="email" name="e-mail" id="e-mail"/>
</p>

<p>
<label for="telephone">Téléphone*</label> : <input type="text" name="telephone" id="telephone"required />
</p>

<p>
<label for="pays">Objet :</label>

<select name="option" id="option">

<option value="objet">Objet</option>
<option value="demande-de-renseignement">Demande de renseignement</option>
<option value="point-de-vente">Point de vente</option>
<option value="partenariat">Partenariat</option>
<option value="autres">Autres</option>
</select>
</p>

<p class="message">

<label for="votre-message">Votre message</label><br />

<textarea name="message" id="message"></textarea>

</p>

<input type="submit" value="envoyer" />

<input type="submit" value="annuler" />

</form>
<p class="parenthese">(Les champs marqués * sont obligatoires)</p>
</div>


<footer>
<img id="footer" src="images/footer.jpg">
</footer>
</div>

</body>

</html>


HTML de la page confirmation de message :


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>GPia</title>
<META NAME="robots" CONTENT="all">

<meta name="description" content="GPia : Une société de conseil basée en France et en Arabie Saoudite.">

<meta name="Keywords" content="gpia, societe, conseil, france, arabie saoudite">

<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<meta name="verify-v1" content="1YtftvtkwpBBbuOEr+RZCvLQSRFwpQH0xxKebW4XLus=" />
<meta http-equiv="Content-Language" content="fr" />
<meta http-equiv="Author" content="g-pia.fr" />
<meta name="Copyright" content="g-pia.fr" />
<meta name="revisit-after" content="7 days" />
<link rel="shortcut icon" href="images/favicon.png" />

<link href="css/globale.css" rel="stylesheet" type="text/css" />

<style type="text/css">
a:link { color:#423d44; text-decoration:none; font-family:Arial, Helvetica, sans-serif; font-weight:550;}
a:visited { color:#423d44; text-decoration:none; font-family:Arial, Helvetica, sans-serif; font-weight:550;}
a:hover { color:#423d44; text-decoration:underline; font-family:Arial, Helvetica, sans-serif;}
</style><!-- Liens de la page -->

</head>

<body>
<div id="wrap">
<div class="header">

<div class="bandeauBlanc">
<div class="imgLogo"> <a href="index.html" title="logo"><img src="images/logo-gpia.jpg" width="250" height="80" /></a></div><!-- fin de logo -->
</div><!-- fin de bandeau blanc -->

<div class="menu">
<div class="languesAnglais"><a href="index.html" title="english"><img src="images/english.gif" width="20" height="16" /></a></div><!-- fin de anglais -->
<div class="languesFrancais"><a href="presentationgpia.pdf" title="français" target="_blank"><img src="images/french.gif" width="20" height="16" /></a></div><!-- fin de français -->
<div class="languesArab"><a href="gpia.pdf" title="arabie saoudite" target="_blank"><img src="images/arab.gif" width="20" height="16" /></a></div><!-- fin de Arabie -->

<ul>
<li><a href="index.html">home</a></li>
<li><a href="aboutus.html">about us</a></li>
<li><a href="services.html">our services</a></li>
<li><a href="news.html">news</a></li>
<li><a href="contactus.html">contact us</a></li>
<li><a href="clientaccess.html">client access</a></li>
</ul>
</div><!-- fin de menu -->
</div><!-- fin de header -->

<div class="contentNews">
<img src="images/bandeau-merci.jpg" width="960" height="200" />

<!-- ________________ STRUCTURE ________________ -->

<div class="gauche">
<div id="nav">
<a href="aboutus.html">about us</a>
<a href="services.html">our services</a>
<a href="news.html">news</a>
<a href="contactus.html">contact us</a>
<a href="clientaccess.html">client access</a>
</div><!-- fin nav -->
</div><!-- fin gauche -->

<div class="texteIndex">
<h1>confirmation</h1>
<p class="texteMerci"> </p>
<p class="texteMerci">Nous avons bien reçu votre message !<br/>
<br/>
<br/>
NCI company vous remercie pour votre message et nous vous répondrons le plus vite possible ...</p>
</div><!-- fin texte index -->

</div><!-- fin de content -->

<div class="bas">

<a href="index.html" title="home"><img src="images/picto_home.png" width="70" height="50" /></a>
<a href="contactus.html" title="contact"><img src="images/picto_contact.png" width="70" height="50" /></a>
<a href="#" title="viadeo"><img src="images/picto_viadeo.png" width="70" height="50" /></a>
<a href="#" title="linkedin"><img src="images/picto_linkedin.png" width="70" height="50" /></a>

</div><!-- fin de bas -->

<div class="footer">
<div id="fin">© 2015 NCI company - Saint-Ouen - Tous droits réservés   |   </div><!-- fin de fin -->
</div><!-- fin de footer -->
</div><!-- fin de wrap -->

</body>
</html>
/spoiler

php :


<?php

$msg_erreur = "Erreur. Les champs suivants doivent être obligatoirement remplis :<br/><br/>";
$message = $msg_erreur;
define('MAIL_DESTINATAIRE','xavier@ncicompany.fr');
define('MAIL_SUJET','Email du site NCI');

// vérification des champs//
if (empty($_POST['email']))
$message .= "Votre email<br/>";
if (empty($_POST['nom']))
$message .= "Votre nom<br/>";
if (empty($_POST['prenom']))
$message .= "Votre prenom<br/>";
if (empty($_POST['comments']))
$message .= "Votre message<br/>";


// si un champ est vide, on affiche le message d'erreur et on stoppe le script
if (strlen($message) > strlen($msg_erreur)) {
echo $message; die();
}

// sinon c'est ok => on continue
foreach($_POST as $index => $valeur) {
$$index = stripslashes(trim($valeur));
}


//Préparation de l'entête du mail:
$mail_entete = "MIME-Version: 1.0\r\n";
$mail_entete .= "From: {$_POST['nom']} "
."<{$_POST['email']}>\r\n";
$mail_entete .= 'Reply-To: '.$_POST['email']."\r\n";
$mail_entete .= 'Content-Type: text/plain; charset="utf-8"';
$mail_entete .= "\r\nContent-Transfer-Encoding: 8bit\r\n";
$mail_entete .= 'X-Mailer:PHP/' . phpversion()."\r\n";

// préparation du corps du mail
$mail_corps = "Message de : $prenom $nom\n";
$mail_corps .= "Email : $email\n";
$mail_corps .= "Telephone : $telephone\n";
$mail_corps .= "Objet du message : $objet\n";
$mail_corps .= "Message : $comments\n";



//$mail_corps .= "Objet du message : $objet\n";
//$mail_corps .= "Message : $comments\n";

// envoi du mail
if (mail(MAIL_DESTINATAIRE,MAIL_SUJET,$mail_corps,$mail_entete)) {
//Le mail est bien expédié
} else {
//Le mail n'a pas été expédié
echo "Une erreur est survenue lors de l'envoi du formulaire par email";
}

if(isset $_POST['lang']){
$langue = $_POST['lang'];
}

if($langue == 'fr'){
header("Location: http://www.ncicompany.fr/confirmationmessage.html");
}elseif($langue == 'en'){
header("Location: http://www.ncicompany.fr/confirmationmessage_en.html");
}
?>


Si vous pouvez me répondre le plus rapidement possible, ça serait super.
A voir également:

6 réponses

Bonjour

Normal que ton traitement de formulaire ne retrouve pas l'email ni le message, car
dans ton traitement de formulaire tu cherches les champs 'email' et 'comments' :
if (empty($_POST['email'])) 
...
if (empty($_POST['comments'])) 

Alors que ces champs n'existent pas dans ton formulaire.
Dans le formulaire tu as :
<input type="email" name="e-mail" id="e-mail"/>

et
<textarea name="message" id="message"></textarea>


Choisis le nom que tu veux, mais mets le même dans le formulaire et dans le traitement.
0
rikuZX93 Messages postés 4 Date d'inscription mardi 10 février 2015 Statut Membre Dernière intervention 12 février 2015
10 févr. 2015 à 12:55
Merci pour ton aide, mais j'ai un autre problème, bon j'ai bien corriger :

HTML :

"<textarea name="comments" id="comments"></textarea>"

et

"<input type="email" name="email" id="email" required/>"

Maintenant, j'ai un autre problème, c'est quand j'envoie, il m'affiche : "Parse error: syntax error, unexpected T_VARIABLE, expecting '(' in /home/ncicompa/www/contact.php on line 61"

Mais je ne sais pas qu'es-ce qu'il faut que je corrige dans le line 61 ?
0
Utilisateur anonyme
10 févr. 2015 à 13:28
Si tu disais quelle est la ligne 61, ce serait plus facile.

Je suppose que c'est là :
if(isset $_POST['lang']){

isset est une fonction, son paramètre (ici $_POST['lang']) doit être mis entre parenthèses.
Tu le sors d'où ce script ?
0
rikuZX93 Messages postés 4 Date d'inscription mardi 10 février 2015 Statut Membre Dernière intervention 12 février 2015
Modifié par rikuZX93 le 10/02/2015 à 14:55
C'est mon frère qu'il a sortie, d'ailleurs, connaît-tu un site ou un logiciel qui permet de tester le php au lieu de tout le temps de publier à chaque fois pour le tester ?

EDIT : j'ai enlever le code de la ligne 61, puis j'ai retester, il y affiche rien du tout, c'est normal ?
0
Utilisateur anonyme
10 févr. 2015 à 15:11
Est-ce que la ligne 61 était bien celle que j'ai indiquée ? Si tu l'enlèves, tu devrais avoir une autre erreur car tu enlèves aussi une accolade gauche, il doit rester une accolade droite toute seule (à moins qu'il n'y ait une erreur d'accolades qui fait que ça retombe sur ses pieds).
Il ne fallait pas enlever cette ligne, juste mettre des parenthèses autour de $_POST['lang'] : cette ligne est utile.

Pour tester sans mettre en ligne à chaque fois (d'autant plus que les hébergeurs n'apprécient pas forcément qu'on utilise leurs machines pour faire du test), tu peux installer un serveur sur ton propre PC, comme le font tous les développeurs (y compris les amateurs comme la plupart des gens ici)
Renseigne-toi sur WAMP si tu travailles sous windows, ou ses petits frères pour les autres systèmes d'exploitation. Mais si tu as déjà du mal à comprendre l'erreur dans if(isset $_POST['lang']), tu n'es pas au bout de tes peines.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
rikuZX93 Messages postés 4 Date d'inscription mardi 10 février 2015 Statut Membre Dernière intervention 12 février 2015
Modifié par rikuZX93 le 12/02/2015 à 10:29
J'ai réglé la page contact, l'envoi de message fonctionne. Mais le seul problème, c'est qu'il m'affiche une page blanche, et non la page de confirmation. Je remet le code php et le code de la page de confirmation :

php :
"<?php

$msg_erreur = "Erreur. Les champs suivants doivent être obligatoirement remplis :<br/><br/>";
$message = $msg_erreur;
define('MAIL_DESTINATAIRE','xavier@ncicompany.fr');
define('MAIL_SUJET','Email du site NCI');

// vérification des champs//
if (empty($_POST['email']))
$message .= "Votre email<br/>";
if (empty($_POST['nom']))
$message .= "Votre nom<br/>";
if (empty($_POST['prenom']))
$message .= "Votre prenom<br/>";
if (empty($_POST['comments']))
$message .= "Votre message<br/>";


// si un champ est vide, on affiche le message d'erreur et on stoppe le script
if (strlen($message) > strlen($msg_erreur)) {
echo $message; die();
}

// sinon c'est ok => on continue
foreach($_POST as $index => $valeur) {
$$index = stripslashes(trim($valeur));
}


//Préparation de l'entête du mail:
$mail_entete = "MIME-Version: 1.0\r\n";
$mail_entete .= "From: {$_POST['nom']} "
."<{$_POST['email']}>\r\n";
$mail_entete .= 'Reply-To: '.$_POST['email']."\r\n";
$mail_entete .= 'Content-Type: text/plain; charset="utf-8"';
$mail_entete .= "\r\nContent-Transfer-Encoding: 8bit\r\n";
$mail_entete .= 'X-Mailer:PHP/' . phpversion()."\r\n";

// préparation du corps du mail
$mail_corps = "Message de : $prenom $nom\n";
$mail_corps .= "Email : $email\n";
$mail_corps .= "Telephone : $telephone\n";
$mail_corps .= "Objet du message : $objet\n";
$mail_corps .= "Message : $comments\n";



//$mail_corps .= "Objet du message : $objet\n";
//$mail_corps .= "Message : $comments\n";

// envoi du mail
if (mail(MAIL_DESTINATAIRE,MAIL_SUJET,$mail_corps,$mail_entete)) {
//Le mail est bien expédié
} else {
//Le mail n'a pas été expédié
echo "Une erreur est survenue lors de l'envoi du formulaire par email";
}
Header("Location : http://www.ncicompany.fr/confirmationmessage.html");
?>"

Code page de confirmation :

"<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>NCI Company</title>
<META NAME="robots" CONTENT="all">

<meta name="description" content="GPia : Une société de conseil basée en France et en Arabie Saoudite.">

<meta name="Keywords" content="gpia, societe, conseil, france, arabie saoudite">

<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<meta name="verify-v1" content="1YtftvtkwpBBbuOEr+RZCvLQSRFwpQH0xxKebW4XLus=" />
<meta http-equiv="Content-Language" content="fr" />
<meta http-equiv="Author" content="g-pia.fr" />
<meta name="Copyright" content="g-pia.fr" />
<meta name="revisit-after" content="7 days" />
<link rel="shortcut icon" href="images/favicon.png" />

<link href="css/globale.css" rel="stylesheet" type="text/css" />

<style type="text/css">
a:link { color:#423d44; text-decoration:none; font-family:Arial, Helvetica, sans-serif; font-weight:550;}
a:visited { color:#423d44; text-decoration:none; font-family:Arial, Helvetica, sans-serif; font-weight:550;}
a:hover { color:#423d44; text-decoration:underline; font-family:Arial, Helvetica, sans-serif;}
</style><!-- Liens de la page -->

</head>

<body>
<div id="wrap">
<div class="header">

<div class="bandeauBlanc">
<div class="imgLogo"> <a href="index.html" title="logo"><img src="images/logo-gpia.jpg" width="250" height="80" /></a></div><!-- fin de logo -->
</div><!-- fin de bandeau blanc -->

<div class="menu">
<div class="languesAnglais"><a href="index.html" title="english"><img src="images/english.gif" width="20" height="16" /></a></div><!-- fin de anglais -->
<div class="languesFrancais"><a href="presentationgpia.pdf" title="français" target="_blank"><img src="images/french.gif" width="20" height="16" /></a></div><!-- fin de français -->
<div class="languesArab"><a href="gpia.pdf" title="arabie saoudite" target="_blank"><img src="images/arab.gif" width="20" height="16" /></a></div><!-- fin de Arabie -->

<ul>
<li><a href="index.html">home</a></li>
<li><a href="aboutus.html">about us</a></li>
<li><a href="services.html">our services</a></li>
<li><a href="news.html">news</a></li>
<li><a href="contactus.html">contact us</a></li>
<li><a href="clientaccess.html">client access</a></li>
</ul>
</div><!-- fin de menu -->
</div><!-- fin de header -->

<div class="contentNews">
<img src="images/bandeau-merci.jpg" width="960" height="200" />

<!-- ________________ STRUCTURE ________________ -->

<div class="gauche">
<div id="nav">
<a href="aboutus.html">about us</a>
<a href="services.html">our services</a>
<a href="news.html">news</a>
<a href="contactus.html">contact us</a>
<a href="clientaccess.html">client access</a>
</div><!-- fin nav -->
</div><!-- fin gauche -->

<div class="texteIndex">
<h1>confirmation</h1>
<p class="texteMerci"> </p>
<p class="texteMerci">Nous avons bien reçu votre message !<br/>
<br/>
<br/>
NCI company vous remercie pour votre message et nous vous répondrons le plus vite possible ...</p>
</div><!-- fin texte index -->

</div><!-- fin de content -->

<div class="bas">

<a href="index.html" title="home"><img src="images/picto_home.png" width="70" height="50" /></a>
<a href="contactus.html" title="contact"><img src="images/picto_contact.png" width="70" height="50" /></a>
<a href="#" title="viadeo"><img src="images/picto_viadeo.png" width="70" height="50" /></a>
<a href="#" title="linkedin"><img src="images/picto_linkedin.png" width="70" height="50" /></a>

</div><!-- fin de bas -->

<div class="footer">
<div id="fin">© 2015 NCI company - Saint-Ouen - Tous droits réservés | </div><!-- fin de fin -->
</div><!-- fin de footer -->
</div><!-- fin de wrap -->

</body>
</html>"

Voilà.

EDIT : Après avoir envoyé, il reste dans le contact.php

EDIT 2 : j'ai du mettre 2 fichier php dont 1 pour l'anglais et 1 pour le français, c'est peut être ça le problème ?
0
Utilisateur anonyme
12 févr. 2015 à 13:33
La redirection ne se fait pas parce qu'il ne faut pas d'espace entre Location et :
0