Voici!
<?php
/* Script d'envoi de courriels */
//Temporisation (nécessaire pour effectuer plus tard une redirection vers une autre URL)
ob_start();
//Exécution du script d'envoi seulement si on a envoyé des données (appui sur le bouton "Envoyer")
if ($_POST['envoi']) {
//On met le compteur d'erreurs à 0
$erreur = 0;
//Si le prénom ou le nom est manquant, on procède à l'arrêt du traitement
if (!$_POST['prenom'] || !$_POST['nom']) {
$erreur = 1; //On a une erreur...
$erreurmess="Informations non valides. Vérifiez vos informations."; //... on retourne un message d'erreur explicatif...
return; //... et on arrête l'exécution du script.
};
//Si on n'a pas d'erreur, on construit puis on envoie le courriel, puis on affiche une erreur positive
$courriel = "[email protected]";
$sujet = "Abonnement de ".$_POST['prenom']." ".$_POST['nom'];
$message = "Ce message confirme l'adhésion de ".$_POST['prenom']." ".$_POST['nom']." à l'association";
//Envoi du courriel ci-dessus et affichage d'un message d'erreur positif
mail($courriel,$sujet,$message);
$erreurmess="Votre abonnement a bien été envoyée à l'association !";
//Instructions de redirection
// 'refresh' est le nombre de secondes à attendre avant de rediriger le visiteur vers une autre adresse
// 'url' est l'adresse vers laquelle rediriger
header("Refresh: 5; url=http://www.domaine.asso.fr");
//Envoi de l'instruction de redirection
ob_flush();
//Puis, qu'on ait ou non envoyé l'adhésion, on affiche le formulaire
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<head>
<title>S'inscrire à l'association</title>
</head>
<body>
<?php
//Si on a reçu un message d'erreur lors d'un envoi précédent, on affiche le message d'erreur
if (!empty($erreurmess)) :
?>
<div>
<p><?php echo $erreurmess; ?></p>
</div>
<?php endif; ?>
<?php
//On n'affiche le formulaire que si on n'a jamais affiché au préalable la page ou si on a une erreur.
if (!$_POST['envoi'] || $erreur) :
?>
<form method="post" action="<?php $PHP_SELF; ?>">
<ul style="list-style: none;">
<li><label>Prénom : <input type="text" id="prenom" name="prenom" value="<?php if (!empty($_POST['prenom'])) {print $_POST['prenom']}; ?>" /></label></li>
<li><label>Nom : <input type="text" id="nom" name="nom" value="<?php if (!empty($_POST['nom'])) {print $_POST['nom']}; ?>" /></label></li>
<li><input type="submit" value="Envoyer" /><input type="hidden" id="envoi" name="envoi" value="1" /></li>
</ul>
</form>
<?php endif; ?>
</body>
</html>
Alors, je sais plus ce qui a été modifié entre temps; mais en plus j'ai une erreur d'accolade ligne 66 sans comprendre pourquoi...
Donc la j'avais aucun affichage (page blanche), puis une redirection.
Parait-il que les ob_start() et flush() sont pour la temporisation :s
Voici!
[php]<?php
/* Script d'envoi de courriels */
//Temporisation (nécessaire pour effectuer plus tard une redirection vers une autre URL)
ob_start();
//Exécution du script d'envoi seulement si on a envoyé des données (appui sur le bouton "Envoyer")
if ($_POST['envoi']) {
//On met le compteur d'erreurs à 0
$erreur = 0;
//Si le prénom ou le nom est manquant, on procède à l'arrêt du traitement
if (!$_POST['prenom'] || !$_POST['nom']) {
$erreur = 1; //On a une erreur...
$erreurmess="Informations non valides. Vérifiez vos informations."; //... on retourne un message d'erreur explicatif...
return; //... et on arrête l'exécution du script.
};
//Si on n'a pas d'erreur, on construit puis on envoie le courriel, puis on affiche une erreur positive
$courriel = "
[email protected]";
$sujet = "Abonnement de ".$_POST['prenom']." ".$_POST['nom'];
$message = "Ce message confirme l'adhésion de ".$_POST['prenom']." ".$_POST['nom']." à l'association";
//Envoi du courriel ci-dessus et affichage d'un message d'erreur positif
mail($courriel,$sujet,$message);
$erreurmess="Votre abonnement a bien été envoyée à l'association !";
//Instructions de redirection
// 'refresh' est le nombre de secondes à attendre avant de rediriger le visiteur vers une autre adresse
// 'url' est l'adresse vers laquelle rediriger
header("Refresh: 5; url=http://www.domaine.asso.fr");
//Envoi de l'instruction de redirection
ob_flush();
//Puis, qu'on ait ou non envoyé l'adhésion, on affiche le formulaire
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<head>
<title>S'inscrire à l'association</title>
</head>
<body>
<?php
//Si on a reçu un message d'erreur lors d'un envoi précédent, on affiche le message d'erreur
if (!empty($erreurmess)) :
?>
<div>
<p><?php echo $erreurmess; ?></p>
</div>
<?php endif; ?>
<?php
//On n'affiche le formulaire que si on n'a jamais affiché au préalable la page ou si on a une erreur.
if (!$_POST['envoi'] || $erreur) :
?>
<form method="post" action="<?php $PHP_SELF; ?>">
<ul style="list-style: none;">
<li><label>Prénom : <input type="text" id="prenom" name="prenom" value="<?php if (!empty($_POST['prenom'])) {print $_POST['prenom']}; ?>" /></label></li>
<li><label>Nom : <input type="text" id="nom" name="nom" value="<?php if (!empty($_POST['nom'])) {print $_POST['nom']}; ?>" /></label></li>
<li><input type="submit" value="Envoyer" /><input type="hidden" id="envoi" name="envoi" value="1" /></li>
</ul>
</form>
<?php endif; ?>
</body>
</html>[/php]
Alors, je sais plus ce qui a été modifié entre temps; mais en plus j'ai une erreur d'accolade ligne 66 sans comprendre pourquoi...
Donc la j'avais aucun affichage (page blanche), puis une redirection.
Parait-il que les ob_start() et flush() sont pour la temporisation :s