Merci beaucoup Moogli, ça marche parfaitement !
Et j'ai une dernière question au passage : Quand le formulaire est envoyé, on revient sur la page avec PHP_SELF . Je suis dans une navigation horizontale avec un système d'ancre et un scrollTo en javascript pour aller d'une section à l'autre (d'où le PHP_SELF#contact, même si je ne sais pas si c'est vraiment utile...). Ca marche nikel lorsqu'on envoie le formulaire, on revient bien sur #contact en repartant de #home avec toutes les autres sections qui défilent, ce qui est l'effet recherché,
On tombe donc sur un "Merci" et une phrase "Envoyer un autre message".
mais lorsque que je clique sur envoyer un autre message, je vais sur la page d'accueil au lieu de retourner sur la page contact alors que je voudrai le même comportement que lorsque j'envoie le formulaire.
C'est ptet pas super clair ce que je te raconte... Mais à tout hasard si tu entrevois une solution, elle serait la bienvenue. Je continue de chercher de tte facons.
Merci encore !
Le code si des gens sont intéressés :
if(!empty($_POST["options"])) {
for ($i = 0; $i < count($_POST["options"]); $i++)
$message = $message."\n".$_POST["options"][$i]." - ";
}
et le code complet :
<?php
/*
********************************************************************************************
CONFIGURATION
********************************************************************************************
*/
// destinataire est votre adresse mail. Pour envoyer à plusieurs à la fois, séparez-les par une virgule
$destinataire = '[email protected]';
// copie ? (envoie une copie au visiteur)
$copie = 'non';
// Action du formulaire (si votre page a des paramètres dans l'URL)
// si cette page est index.php?page=contact alors mettez index.php?page=contact
// sinon, laissez vide
$form_action = $_SERVER["PHP_SELF#contact"];
// Messages de confirmation du mail
//$message_envoye = "Merci !";
//$message_non_envoye = "L'envoi du mail a échoué, veuillez réessayer SVP.";
// Message d'erreur du formulaire
//$message_formulaire_invalide = "Vérifiez que tous les champs soient bien remplis et que l'email soit sans erreur.";
/*
********************************************************************************************
FIN DE LA CONFIGURATION
********************************************************************************************
*/
/*
* cette fonction sert à nettoyer et enregistrer un texte
*/
function Rec($text)
{
$text = trim($text); // delete white spaces after & before text
if (1 === get_magic_quotes_gpc())
{
$stripslashes = create_function('$txt', 'return stripslashes($txt);');
}
else
{
$stripslashes = create_function('$txt', 'return $txt;');
}
// magic quotes ?
$text = $stripslashes($text);
$text = htmlspecialchars($text, ENT_QUOTES); // converts to string with " and ' as well
$text = nl2br($text);
return $text;
};
/*
* Cette fonction sert à vérifier la syntaxe d'un email
*/
function IsEmail($email)
{
$pattern = "^([a-z0-9_]|\\-|\\.)+@(([a-z0-9_]|\\-)+\\.)+[a-z]{2,7}$";
return (eregi($pattern,$email)) ? true : false;
};
$err_formulaire = false; // sert pour remplir le formulaire en cas d'erreur si besoin
// si formulaire envoyé, on récupère tous les champs. Sinon, on initialise les variables.
$nom = (isset($_POST['nom'])) ? Rec($_POST['nom']) : '';
$prenom = (isset($_POST['prenom'])) ? Rec($_POST['prenom']) : '';
$email = (isset($_POST['email'])) ? Rec($_POST['email']) : '';
$objet = (isset($_POST['objet'])) ? Rec($_POST['objet']) : '';
$message = (isset($_POST['message'])) ? Rec($_POST['message']) : '';
if (isset($_POST['envoi']))
{
// On va vérifier les variables et l'email ...
$email = (IsEmail($email)) ? $email : ''; // soit l'email est vide si erroné, soit il vaut l'email entré
$err_formulaire = (IsEmail($email)) ? false : true;
if (($nom != '') && ($prenom != '') && ($email != '') && ($objet != '') && ($message != '') )
{
// les 4 variables sont remplies, on génère puis envoie le mail
$headers = 'From: '.$prenom.' '.$nom.' <'.$email.'>' . "\r\n";
// envoyer une copie au visiteur ?
if ($copie == 'oui')
{
$cible = $destinataire.','.$email;
}
else
{
$cible = $destinataire;
};
// Remplacement de certains caractères spéciaux
$message = html_entity_decode($message);
$message = str_replace(''',"'",$message);
$message = str_replace('’',"'",$message);
$message = str_replace('<br>','',$message);
$message = str_replace('<br />','',$message);
if(!empty($_POST["options"])) {
for ($i = 0; $i < count($_POST["options"]); $i++)
$message = $message."\n".$_POST["options"][$i]." - ";
}
// Envoi du mail
if (mail($cible, $objet, $message, $headers))
{
echo '<p class="envoiMess">Merci !</p>'."\n";
echo "<p class='formErreur'><a href=".$form_action.">Envoyer un autre message...</a></p>";
}
else
{
echo '<p class="envoiMess">Raté... Réessayer pour voir !</p>'."\n";
echo "<p class='formErreur'><a href=".$form_action.">Envoyer un autre message...</a></p>";
};
}
else
{
// une des 3 variables (ou plus) est vide ...
echo '<p class="formErreur">Vérifiez que tous les champs soient bien remplis.</p>'."\n";
$err_formulaire = true;
};
}; // fin du if (!isset($_POST['envoi']))
if (($err_formulaire) || (!isset($_POST['envoi'])))
{
// afficher le formulaire
echo '<form id="contact" method="post" action="'.$form_action.'">'."\n";
echo ' <ul>'."\n";
echo ' <li>'."\n";
echo ' <input type="text" id="objet" name="objet" value="Organisme"'.stripslashes($objet).'" tabindex="1" onclick="clearf()"/>'."\n";
echo ' </li>'."\n";
echo ' <li>'."\n";
echo ' <input type="text" id="nom" name="nom" value="Nom"'.stripslashes($nom).'" tabindex="2" onclick="clearf2()"/>'."\n";
echo ' </li>'."\n";
echo ' <li>'."\n";
echo ' <input type="text" id="prenom" name="prenom" value="Prénom"'.stripslashes($prenom).'" tabindex="3" onclick="clearf3()"/>'."\n";
echo ' </li>'."\n";
echo ' <li>'."\n";
echo ' <input type="text" id="email" name="email" value="Email"'.stripslashes($email).'" tabindex="4" onclick="clearf4()"/>'."\n";
echo ' </li>'."\n";
echo ' </ul>'."\n";
echo ' <ul>'."\n";
echo ' <li>'."\n";
echo ' <textarea id="message" name="message" value="Message" tabindex="5" onclick="clearf5()">'.stripslashes($message).'</textarea>'."\n";
echo ' </li>'."\n";
echo ' <li>'."\n";
echo ' <p id="demandeDevis">Demande de devis</p>'."\n";
echo ' </li>'."\n";
echo ' <li>'."\n";
echo ' <p class="optionsDevis"><input type="checkbox" name="options[]"'.$options.' value="Du monde entier au coeur du monde">Du monde entier au coeur du monde</p>'."\n";
echo ' </li>'."\n";
echo ' <li>'."\n";
echo ' <p class="optionsDevis"><input type="checkbox" name="options[]"'.$options.' value="Les trois ptits loups et le grand méchant cochon">Les trois ptits loups et le grand méchant cochon</p>'."\n";
echo ' </li>'."\n";
echo ' <li>'."\n";
echo ' <p class="optionsDevis"><input type="checkbox" name="options[]"'.$options.' value="Musiques classiques, musiques du monde">Musiques classiques, musiques du monde</p>'."\n";
echo ' </li>'."\n";
echo ' </ul>'."\n";
echo ' <div id="submit"><input border=0 src="img/submit.png" type="image" value="submit" name="envoi" align="middle" ></div>'."\n";
echo '</form>'."\n";
};
?>
Merci beaucoup Moogli, ça marche parfaitement !
Et j'ai une dernière question au passage : Quand le formulaire est envoyé, on revient sur la page avec PHP_SELF . Je suis dans une navigation horizontale avec un système d'ancre et un scrollTo en javascript pour aller d'une section à l'autre (d'où le PHP_SELF#contact, même si je ne sais pas si c'est vraiment utile...). Ca marche nikel lorsqu'on envoie le formulaire, on revient bien sur #contact en repartant de #home avec toutes les autres sections qui défilent, ce qui est l'effet recherché,
On tombe donc sur un "Merci" et une phrase "Envoyer un autre message".
mais lorsque que je clique sur envoyer un autre message, je vais sur la page d'accueil au lieu de retourner sur la page contact alors que je voudrai le même comportement que lorsque j'envoie le formulaire.
C'est ptet pas super clair ce que je te raconte... Mais à tout hasard si tu entrevois une solution, elle serait la bienvenue. Je continue de chercher de tte facons.
Merci encore !
Le code si des gens sont intéressés :
[php]if(!empty($_POST["options"])) {
for ($i = 0; $i < count($_POST["options"]); $i++)
$message = $message."\n".$_POST["options"][$i]." - ";
}[/php]
et le code complet :
[php]
<?php
/*
********************************************************************************************
CONFIGURATION
********************************************************************************************
*/
// destinataire est votre adresse mail. Pour envoyer à plusieurs à la fois, séparez-les par une virgule
$destinataire = '
[email protected]';
// copie ? (envoie une copie au visiteur)
$copie = 'non';
// Action du formulaire (si votre page a des paramètres dans l'URL)
// si cette page est index.php?page=contact alors mettez index.php?page=contact
// sinon, laissez vide
$form_action = $_SERVER["PHP_SELF#contact"];
// Messages de confirmation du mail
//$message_envoye = "Merci !";
//$message_non_envoye = "L'envoi du mail a échoué, veuillez réessayer SVP.";
// Message d'erreur du formulaire
//$message_formulaire_invalide = "Vérifiez que tous les champs soient bien remplis et que l'email soit sans erreur.";
/*
********************************************************************************************
FIN DE LA CONFIGURATION
********************************************************************************************
*/
/*
* cette fonction sert à nettoyer et enregistrer un texte
*/
function Rec($text)
{
$text = trim($text); // delete white spaces after & before text
if (1 === get_magic_quotes_gpc())
{
$stripslashes = create_function('$txt', 'return stripslashes($txt);');
}
else
{
$stripslashes = create_function('$txt', 'return $txt;');
}
// magic quotes ?
$text = $stripslashes($text);
$text = htmlspecialchars($text, ENT_QUOTES); // converts to string with " and ' as well
$text = nl2br($text);
return $text;
};
/*
* Cette fonction sert à vérifier la syntaxe d'un email
*/
function IsEmail($email)
{
$pattern = "^([a-z0-9_]|\\-|\\.)+@(([a-z0-9_]|\\-)+\\.)+[a-z]{2,7}$";
return (eregi($pattern,$email)) ? true : false;
};
$err_formulaire = false; // sert pour remplir le formulaire en cas d'erreur si besoin
// si formulaire envoyé, on récupère tous les champs. Sinon, on initialise les variables.
$nom = (isset($_POST['nom'])) ? Rec($_POST['nom']) : '';
$prenom = (isset($_POST['prenom'])) ? Rec($_POST['prenom']) : '';
$email = (isset($_POST['email'])) ? Rec($_POST['email']) : '';
$objet = (isset($_POST['objet'])) ? Rec($_POST['objet']) : '';
$message = (isset($_POST['message'])) ? Rec($_POST['message']) : '';
if (isset($_POST['envoi']))
{
// On va vérifier les variables et l'email ...
$email = (IsEmail($email)) ? $email : ''; // soit l'email est vide si erroné, soit il vaut l'email entré
$err_formulaire = (IsEmail($email)) ? false : true;
if (($nom != '') && ($prenom != '') && ($email != '') && ($objet != '') && ($message != '') )
{
// les 4 variables sont remplies, on génère puis envoie le mail
$headers = 'From: '.$prenom.' '.$nom.' <'.$email.'>' . "\r\n";
// envoyer une copie au visiteur ?
if ($copie == 'oui')
{
$cible = $destinataire.','.$email;
}
else
{
$cible = $destinataire;
};
// Remplacement de certains caractères spéciaux
$message = html_entity_decode($message);
$message = str_replace(''',"'",$message);
$message = str_replace('’',"'",$message);
$message = str_replace('<br>','',$message);
$message = str_replace('<br />','',$message);
if(!empty($_POST["options"])) {
for ($i = 0; $i < count($_POST["options"]); $i++)
$message = $message."\n".$_POST["options"][$i]." - ";
}
// Envoi du mail
if (mail($cible, $objet, $message, $headers))
{
echo '<p class="envoiMess">Merci !</p>'."\n";
echo "<p class='formErreur'><a href=".$form_action.">Envoyer un autre message...</a></p>";
}
else
{
echo '<p class="envoiMess">Raté... Réessayer pour voir !</p>'."\n";
echo "<p class='formErreur'><a href=".$form_action.">Envoyer un autre message...</a></p>";
};
}
else
{
// une des 3 variables (ou plus) est vide ...
echo '<p class="formErreur">Vérifiez que tous les champs soient bien remplis.</p>'."\n";
$err_formulaire = true;
};
}; // fin du if (!isset($_POST['envoi']))
if (($err_formulaire) || (!isset($_POST['envoi'])))
{
// afficher le formulaire
echo '<form id="contact" method="post" action="'.$form_action.'">'."\n";
echo ' <ul>'."\n";
echo ' <li>'."\n";
echo ' <input type="text" id="objet" name="objet" value="Organisme"'.stripslashes($objet).'" tabindex="1" onclick="clearf()"/>'."\n";
echo ' </li>'."\n";
echo ' <li>'."\n";
echo ' <input type="text" id="nom" name="nom" value="Nom"'.stripslashes($nom).'" tabindex="2" onclick="clearf2()"/>'."\n";
echo ' </li>'."\n";
echo ' <li>'."\n";
echo ' <input type="text" id="prenom" name="prenom" value="Prénom"'.stripslashes($prenom).'" tabindex="3" onclick="clearf3()"/>'."\n";
echo ' </li>'."\n";
echo ' <li>'."\n";
echo ' <input type="text" id="email" name="email" value="Email"'.stripslashes($email).'" tabindex="4" onclick="clearf4()"/>'."\n";
echo ' </li>'."\n";
echo ' </ul>'."\n";
echo ' <ul>'."\n";
echo ' <li>'."\n";
echo ' <textarea id="message" name="message" value="Message" tabindex="5" onclick="clearf5()">'.stripslashes($message).'</textarea>'."\n";
echo ' </li>'."\n";
echo ' <li>'."\n";
echo ' <p id="demandeDevis">Demande de devis</p>'."\n";
echo ' </li>'."\n";
echo ' <li>'."\n";
echo ' <p class="optionsDevis"><input type="checkbox" name="options[]"'.$options.' value="Du monde entier au coeur du monde">Du monde entier au coeur du monde</p>'."\n";
echo ' </li>'."\n";
echo ' <li>'."\n";
echo ' <p class="optionsDevis"><input type="checkbox" name="options[]"'.$options.' value="Les trois ptits loups et le grand méchant cochon">Les trois ptits loups et le grand méchant cochon</p>'."\n";
echo ' </li>'."\n";
echo ' <li>'."\n";
echo ' <p class="optionsDevis"><input type="checkbox" name="options[]"'.$options.' value="Musiques classiques, musiques du monde">Musiques classiques, musiques du monde</p>'."\n";
echo ' </li>'."\n";
echo ' </ul>'."\n";
echo ' <div id="submit"><input border=0 src="img/submit.png" type="image" value="submit" name="envoi" align="middle" ></div>'."\n";
echo '</form>'."\n";
};
?>
[/php]