Formulaire php mail

Fermé
mela - 3 déc. 2010 à 12:01
arthezius Messages postés 3538 Date d'inscription jeudi 15 mai 2008 Statut Membre Dernière intervention 11 septembre 2016 - 3 déc. 2010 à 17:25
Bonjour,

Sur mon site j'ai créé un formulaire avec une page qui contient les infos du formulaire une et qui appelle une page php pour le traitement de données qui sont par la suite envoyées sur ma boite mail.
Après avoir cliquer sur Envoyer, les internautes sont redirigés vers une page confirmant l'envoie du formulaire. J'aimerais savoir s'il est possible qu'au bout de quelques secondes, ils soient redirigés vers l'acceuil du site.

Après avoir longuement rechercher, je pense que c'est la fonction "header" qui fait la redirection mais je ne sais pas comment l'insérer dans mon code que voici :

<?php
header('Location: index.php');
$msg_erreur = "Erreur. Les champs suivants doivent être obligatoirement remplis :<br/><br/>";
$msg_ok = "Votre demande a bien été prise en compte.";
$message = $msg_erreur;
define('MAIL_DESTINATAIRE','com-ffjbt@orange.fr'); // remplacer par votre email
define('MAIL_SUJET','Demande de devis');
header("Location: http://www.index.php/"); /* Redirection du navigateur */

// vérification des champs
if (empty($_POST['type']))
$message .= "type<br/>";

if (empty($_POST['poignee']))
$message .= "poignee<br/>";
if (empty($_POST['civilite']))
$message .= "civilite<br/>";
if (empty($_POST['contact']))
$message .= "contact<br/>";
if (empty($_POST['adresse']))
$message .= "Votre adresse<br/>";
if (empty($_POST['codepostal']))
$message .= "Votre code postal<br/>";
if (empty($_POST['ville']))
$message .= "Votre ville<br/>";


// si un champ est vide, on affiche le message d'erreur
if (strlen($message) > strlen($msg_erreur)) {

echo $message;

// sinon c'est ok

} else {

foreach($_POST as $index => $valeur) {
$$index = stripslashes(trim($valeur));
}

$type = $_POST['type'];
$sqltype = '';
for ($i=0; $i<count($type); $i++)
{
$sqltype .= $type[$i];
$sqltype .= ', ';
}

$poignee = $_POST['poignee'];
$sqlpoignee = '';
for ($i=0; $i<count($poignee); $i++)
{
$sqlpoignee .= $poignee[$i];
$sqlpoignee .= ', ';
}

//Préparation de l'entête du mail:
$mail_entete = "MIME-Version: 1.0\r\n";
$mail_entete .= "From: {$_POST['contact']} "
."<{$_POST['mail']}>\r\n";
$mail_entete .= 'Reply-To: '.$_POST['mail']."\r\n";
$mail_entete .= 'Content-Type: text/plain; charset="iso-8859-1"';
$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 = "Tambourins souhaité : $sqltype\n\n\n, $qte1, $qte2, $qte3, $qte4, $qte5, $qte6, $qte7, $qte8";

$mail_corps .= "Poignee souhaitée : $sqlpoignee\n\n\n, $quantite1, $quantite2";

$mail_corps .= "Contact : $civilite\n, $structure, $contact";

$mail_corps .= "Adresse : $adresse, $codepostal $ville, $telephone, $mail, $pays\n";

// envoi du mail
if (mail(MAIL_DESTINATAIRE,MAIL_SUJET,$mail_corps,$mail_entete)) {

//Le mail est bien expédié
echo $msg_ok;
} else {

//Le mail n'a pas été expédié
echo 'Une erreur est survenue lors de l\'envoi du formulaire par email';
}

}



?>


Merci d'avance pour votre aide

A voir également:

5 réponses

jalalnet Messages postés 293 Date d'inscription mardi 20 octobre 2009 Statut Membre Dernière intervention 30 juillet 2023 10
Modifié par jalalnet le 3/12/2010 à 12:45
header('Location:cible.php');
0
Merci mais je ne sais pas où et comment l'inserer dans mon code
0
jalalnet Messages postés 293 Date d'inscription mardi 20 octobre 2009 Statut Membre Dernière intervention 30 juillet 2023 10
3 déc. 2010 à 13:01
bin tu l'insère au moment quand tu veut se redirigé
Ex: un fichier PHP exécuté un requête d 'ajout a la BDD donc donc on met la redirection a la fin du requête
0
J'avoue que ça ne m'aide pas du tout ce que tu me dis, je débute en php. Cette fonction je l'ai mise en haut, au début du script, à la fin. Mais rien ne marche.

Par rapport à mon code tu peux me dire exactement où je doit le mettre?

Désolée, je suis un boulet comme je débute et me forme qu'avec les tuto du web, c'est un peu compliqué.

Merci
0
arthezius Messages postés 3538 Date d'inscription jeudi 15 mai 2008 Statut Membre Dernière intervention 11 septembre 2016 475
3 déc. 2010 à 14:18
header('Refresh: #temps#; URL= #url#');


#temps# à remplacer par le temps en seconde
#url# à remplacer par l'url de la page de destination

Exemple:
header('Refresh: 5; URL= accueil.html');
0

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

Posez votre question
C'est bon j'ai réussi à trouver le code qu'il me fallait et où le placer.

Pour info voici le code :

<META http-equiv="refresh" content="5; URL=mapage.php?id=2">

A mettre avant "Doctype"
0
arthezius Messages postés 3538 Date d'inscription jeudi 15 mai 2008 Statut Membre Dernière intervention 11 septembre 2016 475
3 déc. 2010 à 17:25
Une balise meta se mete entre les <head>.
C'est l'usage du code PHP qui nécessite impérativement d'être placé avant toute chose en html.

Soit trois pages: a, b et c.
Sur la page a, un lien pointe vers la page b.
Sur la page b un script redirige vers la page c.

Avec une balise meta
Arrivé sur la page c, si tu cliques sur précédent, tu reviens sur la page b pour revenir ensuite sur la page c.

Avec un header() en PHP
Arrivé sur la page c, si tu cliques sur précédent, tu reviens en page a. C'est l'avantage. La page b est donc invisible à la navigation (excepté la présence d'un lien vers celle-ci en page a. C'est l'avantage.
0