redirection vers page accueil après envoi formulaire mail
Posté : 01 mars 2013, 01:01
Bonjour à tous,
Je sèche depuis plusieurs jours sur un petit soucis...
J'ai mis en place un formulaire pour la fonction mail, mais le code étant sur la même page, il revient sur lui même, et après l'envoi du mail, ne se redirige pas automatiquement vers la page d'accueil (mon site n'a que deux pages, index.php et contact.php).
Voici mon code :
J'ai mis un header location vers la fin du code, mais le navigateur me renvoi ceci :
Warning: Cannot modify header information - headers already sent by (output started at /mnt/171/sda/1/d/monsite/contact.php:4) in /mnt/171/sda/1/d/monsite/contact.php on line 119
Merci de votre aide
Je sèche depuis plusieurs jours sur un petit soucis...
J'ai mis en place un formulaire pour la fonction mail, mais le code étant sur la même page, il revient sur lui même, et après l'envoi du mail, ne se redirige pas automatiquement vers la page d'accueil (mon site n'a que deux pages, index.php et contact.php).
Voici mon code :
Code : Tout sélectionner
<?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 = '';
// Messages de confirmation du mail
$message_envoye = "Votre message nous est bien parvenu ! <a href=\"/\">Retour à la page principale</a>";
$message_non_envoye = "<br /> <br />L'envoi du mail a échoué, veuillez réessayer SVP.";
// Message d'erreur du formulaire
$message_formulaire_invalide = "<br /> <br />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 = htmlspecialchars(trim($text), ENT_QUOTES);
if (1 === get_magic_quotes_gpc())
{
$text = stripslashes($text);
}
$text = nl2br($text);
return $text;
};
/*
* Cette fonction sert à vérifier la syntaxe d'un email
*/
function IsEmail($email)
{
$value = preg_match('/^(?:[\w\!\#\$\%\&\'\*\+\-\/\=\?\^\`\{\|\}\~]+\.)*[\w\!\#\$\%\&\'\*\+\-\/\=\?\^\`\{\|\}\~]+@(?:(?:(?:[a-zA-Z0-9_](?:[a-zA-Z0-9_\-](?!\.)){0,61}[a-zA-Z0-9_-]?\.)+[a-zA-Z0-9_](?:[a-zA-Z0-9_\-](?!$)){0,61}[a-zA-Z0-9_]?)|(?:\[(?:(?:[01]?\d{1,2}|2[0-4]\d|25[0-5])\.){3}(?:[01]?\d{1,2}|2[0-4]\d|25[0-5])\]))$/', $email);
return (($value === 0) || ($value === false)) ? false : true;
}
// formulaire envoyé, on récupère tous les champs.
$nom = (isset($_POST['nom'])) ? Rec($_POST['nom']) : '';
$email = (isset($_POST['email'])) ? Rec($_POST['email']) : '';
$objet = "Contact depuis xxxxxxxxxxxxx.fr";
$message = (isset($_POST['message'])) ? Rec($_POST['message']) : '';
// 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 = false; // sert pour remplir le formulaire en cas d'erreur si besoin
if (isset($_POST['envoi']))
{
if (($nom != '') && ($email != '') && ($objet != '') && ($message != ''))
{
// les 4 variables sont remplies, on génère puis envoie le mail
$headers = 'From:'.$nom.' <'.$email.'>' . "\r\n";
//$headers .= 'Reply-To: '.$email. "\r\n" ;
//$headers .= 'X-Mailer:PHP/'.phpversion();
// envoyer une copie au visiteur ?
if ($copie == 'oui')
{
$cible = $destinataire.','.$email;
}
else
{
$cible = $destinataire;
};
// Remplacement de certains caractères spéciaux
$message = str_replace("'","'",$message);
$message = str_replace("’","'",$message);
$message = str_replace(""",'"',$message);
$message = str_replace('<br>','',$message);
$message = str_replace('<br />','',$message);
$message = str_replace("<","<",$message);
$message = str_replace(">",">",$message);
$message = str_replace("&","&",$message);
// Envoi du mail
if (mail($cible, $objet, $message, $headers))
{
header("location:index.php");
}
else
{
echo '<p>'.$message_non_envoye.'</p>';
};
}
else
{
// une des variables est vide ...
echo '<p>'.$message_formulaire_invalide.'</p>';
$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.'">
<fieldset><legend>Formulaire de contact</legend>
<p class="left"><label for="nom">Nom </label><input type="text" id="nom" name="nom" value="'.stripslashes($nom).'" tabindex="1" /></p>
<p class="left"><label for="email">Email </label><input type="text" id="email" name="email" value="'.stripslashes($email).'" tabindex="2" /></p>
<p class="left"><label for="message">Message :</label><textarea id="message" name="message" tabindex="4" cols="30" rows="8">'.stripslashes($message).'</textarea></p>
</fieldset>
<div style="text-align:center;"><input type="submit" name="envoi" value="Envoyer le formulaire !" /></div>
</form>';
};
?>Warning: Cannot modify header information - headers already sent by (output started at /mnt/171/sda/1/d/monsite/contact.php:4) in /mnt/171/sda/1/d/monsite/contact.php on line 119
Merci de votre aide