Problème d'envoi avec double formulaire... HELP !!

Petit nouveau ! | 1 Messages

02 avr. 2013, 19:16

Bonjour à tous,

Voila deux jours que je bloque sur un formulaire qui ne fonctionne qu'en apparence... Je m'explique :
il s'agit d'un formulaire partagé en 2 onglets : "proposition de projet" et "dire bonjour" (je le précise car c'est peut-être le script qui fait des siennes...). Le formulaire et le php se trouvent sur une seule et même page.
Comme je le disais, en apparence tout fonctionne bien (validation, confirmation d'envoi,...) mais le hic (et sans doute le plus important) c'est qu'au final, je ne reçois rien sur la boîte email qui est liée.
Pourtant, tout semble clair (j'essaie de commenter au maximum) mais je ne vois vraiment pas ce qui coince...

Quelqu'un pourrait-il m'aider ?

D'avance merci !!

<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<script>
$(document).ready(function() {
$("#content div").hide();
$("#tabs li:first").attr("id","current");
$("#content div:first").fadeIn();
$('#tabs a').click(function(e) {
e.preventDefault();
$("#content div").hide();
$("#tabs li").attr("id","");
$(this).parent().attr("id","current");
$('#' + $(this).attr('title')).fadeIn();
});
})();
</script>
</head>

<body>
<div class="container">
<section id="contact">
<h2>- CONTACT -</h2>
<div id="forms">
<ul id="tabs">
<li><a href="#" title="project">Proposition de projet</a></li>
<li><a href="#" title="hello">Dire bonjour...</a></li>
</ul>
<div id="content">
<div id="project">
<?php
if (isset($_POST["envoi"])){
$etat = "erreur";
// On arrange la mise en forme
if (isset($_POST["name"])) $_POST["name"]=trim(stripslashes($_POST["name"]));
if (isset($_POST["email"])) $_POST["email"]=trim(stripslashes($_POST["email"]));
if (isset($_POST["details"])) $_POST["details"]=trim(stripslashes($_POST["details"]));
// validité des champs
if (empty($_POST["name"])) { // L'utilisateur n'a pas rempli le champ nom
$erreur=''; // l'erreur sera affichée
}
elseif (empty($_POST["email"])) { // L'utilisateur n'a pas rempli le champ email
$erreur='';
}
// vérification du type [email protected]
elseif (!preg_match("$[0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\.[a-z]{2,4}$",$_POST["email"])){
$erreur='';
}
elseif (empty($_POST["location"])) {
$erreur='';
}
elseif (empty($_POST["details"])) {
$erreur='';
}
else { // Si tous les champs sont valides, l'état est ok
$etat="ok";
}
}
else { // Sinon le formulaire n'a pas été soumis
$etat="attente"; // On passe en attente
}
if ($etat!="ok"){ // Le formulaire a été soumis mais il y a des erreurs (etat=erreur) OU le formulaire n'a pas été soumis (etat=attente)
if ($etat=="erreur"){ // le formulaire a été soumis mais il y a des erreurs --> on affiche l'erreur
echo "<span style=\"color:red \">".$erreur."</span><br /><br />\n";
} ?>
<form action="<?php echo $_SERVER["PHP_SELF"]; ?>" method="post" name="form_project" id="form_project">
<fieldset>
<ul>
<li>Name :<br />
<input type="text" name="name" value="<?php if (!empty($_POST["name"])) {
echo htmlspecialchars($_POST["name"],ENT_QUOTES);}?>" required >
</li>
<li>Email :<br />
<input type="email" name="email" value="<?php if (!empty($_POST["email"])) {
echo htmlspecialchars($_POST["email"],ENT_QUOTES);}?>" required >
</li>
<li>Company (if applicable) :<br />
<input type="text" name="company" value="<?php if (!empty($_POST["company"])) {
echo htmlspecialchars($_POST["company"],ENT_QUOTES);}?>">
</li>
<li>Location :<br />
<input type="text" name="location" value="<?php if (!empty($_POST["location"])) {
echo htmlspecialchars($_POST["location"],ENT_QUOTES);}?>" required >
</li>
<li>Current website (if applicable) :<br />
<input type="text" name="website" value="<?php if (!empty($_POST["website"])) {
echo htmlspecialchars($_POST["website"],ENT_QUOTES);}?>">
</li>
<li>Details :<br />
<textarea name="details" ></textarea>
</li>
<li>
<input id="send_form_project" name="envoi" type="submit" value="submit">
</li>
</ul>
</fieldset>
</form>
<?php }
else { // état est ok --> on envoie le mail
$his_name = $_POST["name"];
$his_email = $_POST["email"];
$his_message = $_POST["details"];

$my_email = "[email protected]"; // Mise en forme du message que vous recevrez
$my_name = "mon nom";
$my_url = "contact.php";

$message_for_me =" Voici le message :\n\n Project proposal : \n\n Name : ".$_POST["name"]."\n\n Email: ".$_POST["email"]."\n\n Company: ".$_POST["company"]."\n\n Location: ".$_POST["location"]."\n\n Website: ".$_POST["website"]."\n\n Details: ".$_POST["details"]."\n";

// Mise en forme de l'accusé réception qu'il recevra
$accuse_pour_lui ="Message";
$subject_for_me = 'sujet pour moi';
$subject_for_him = 'sujet pour lui';

// Envoie du mail pour moi
$entete1 = "From: " . $his_name . " <" . $his_email . ">\n";
$entete1 .='Content-Type: text/plain; charset="iso-8859-1"'."\n";
$entete1 .='Content-Transfer-Encoding: 8bit';

// Envoie du mail pour lui
$entete2 = "From: " . $my_name . " <" . $my_email . ">\n";
$entete2 .='Content-Type: text/plain; charset="iso-8859-1"'."\n";
$entete2 .='Content-Transfer-Encoding: 8bit';
}
// Confirmation du mail envoyé
if (@mail($my_email,$subject_for_me,$message_for_me,$entete1)){
echo "<p style=\" position: absolute; top: 50%; left: 50%; width: 140px; height: 65px;
background-color: #000; margin: 50px auto 0 auto;
padding: 15px 25px 25px 15px; text-align:center; color: white;\">Votre message est envoyé.<br/><br />
<a href=\"contact.php\" style=\"text-decoration: none; text-decoration: underline; color: #3744c1; \">OK</a>
</p>\n";
} ?>
</div>
<div id="hello">
<?php
if (isset($_POST["envoi2"])){
$etat = "erreur";
if (isset($_POST["name2"])) $_POST["name2"]=trim(stripslashes($_POST["name2"]));
if (isset($_POST["email2"])) $_POST["email2"]=trim(stripslashes($_POST["email2"]));
if (isset($_POST["details2"])) $_POST["details2"]=trim(stripslashes($_POST["details2"]));
if (empty($_POST["name2"])) {
$erreur='';
}
elseif (empty($_POST["email2"])) {
$erreur='';
}
elseif (!preg_match("$[0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\.[a-z]{2,4}$",$_POST["email2"])){
$erreur='';
}
elseif (empty($_POST["details2"])) {
$erreur='';
}
else {
$etat="ok";
}
}
else {
$etat="attente";
}
if ($etat!="ok"){
if ($etat=="erreur"){
echo "<span style=\"color:red \">".$erreur."</span><br /><br />\n";
}
?>
<form action="<?php echo $_SERVER["PHP_SELF"]; ?>" method="post" name="form_hello" id="form_hello">
<fieldset>
<ul>
<li>Name :<br />
<input type="text" name="name2" value="<?php if (!empty($_POST["name2"])) {
echo htmlspecialchars($_POST["name2"],ENT_QUOTES); }?>" required>
</li>
<li>Email :<br />
<input type="email" name="email2" value="<?php if (!empty($_POST["email2"])) {
echo htmlspecialchars($_POST["email2"],ENT_QUOTES); }?>" required>
</li>
<li>Your message :<br />
<textarea name="details2" ></textarea>
</li>
<li>
<input id="send_form_hello" name="envoi2" type="submit" value="submit">
</li>
</ul>
</fieldset>
</form>
<?php
}
else {
$his_name2 = $_POST["name2"];
$his_email2 = $_POST["email2"];
$his_message2 = $_POST["details2"];

$my_email2 = "[email protected]";
$my_name2 = "monnom";
$my_url2 = "contact.php";

$message_for_me2 ="Message";


$accuse_pour_lui2 ="Accusé";

$subject_for_me2 = 'objet pour moi';

$subject_for_him2 = 'objet pour lui';

$entete3 = "From: " . $his_name2 . " <" . $his_email2 . ">\n";
$entete3 .='Content-Type: text/plain; charset="iso-8859-1"'."\n";
$entete3 .='Content-Transfer-Encoding: 8bit';


$entete4 = "From: " . $my_name2 . " <" . $my_email2 . ">\n";
$entete4 .='Content-Type: text/plain; charset="iso-8859-1"'."\n";
$entete4 .='Content-Transfer-Encoding: 8bit';
}
?>
</div>
<?php if (@mail($my_email2,$subject_for_me2,$message_for_me2,$entete3)){
echo "<p style=\"position: absolute; top: 30px; left:45%; width: 140px; height: 65px;
background-color: #000; margin: 50px auto 0 auto;
padding: 15px 25px 25px 15px; text-align:center; color: white;\">Votre message est envoyé.<br /><br />
<a href=\"contact.php\" style=\"text-decoration: none; text-decoration: underline; color: #3744c1; \">OK</a>
</p>\n";
} ?>
</div>
</div>
<footer></footer>
</div>
</body>
</html>

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

03 avr. 2013, 09:52

salut,

vire les @ dans ton code ça empêche tous debug.

ensuite, au premier affichage tu tente d'envoyer les e-mails lignes 127 et 218, d'où les @ pour masquer les erreurs que tu crée en ne mettant l'envoie de mail au bon endroit (dans la condition qui valide le formulaire).
Il faut que tu revoie tes conditions en les simplifiant, afin d'avoir un maximum de souplesse et le moins de contrainte possible.
tu peux mettre un if par champs, c'est possible et cela te permet d'avoir un message pour chaque champ.

Pourquoi deux fois la même validation ?
tu n'inclus pas JQurery mais tente de l'utiliser cela ne peux fonctionner.
quitte a utiliser un doctype html5, autant fermer les balise input ;) (<input />).

@+
Il en faut peu pour être heureux ......