[PHP] header() après envoi de mail

Résolu/Fermé
Aidez-moi - 16 nov. 2009 à 00:00
avion-f16 Messages postés 19249 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 15 juin 2024 - 16 nov. 2009 à 00:51
Bonjour, je code un script de contact mais j'ai un gros problème pour évité le spam en réactualisant la page après l'envoi du mail j'utilise header(), mais comme je le mais pas en début sa fait une erreur.

J'aimerai savoir comment faire une redirection toujours en PHP pour remplacé header().
A voir également:

11 réponses

avion-f16 Messages postés 19249 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 15 juin 2024 4 503
16 nov. 2009 à 00:38
Sans faire l'echo
<?php
/* Vérification */
$nbErreur = 0;

$erreurs = '<ul>'."\n";
if(empty($_POST['nom']) {
    $nbErreur++;
    $erreurs .= '<li>Le champ "nom" est vide</li>'."\n";
}
if(empty($_POST['prenom']) {
    $nbErreur++;
    $erreurs .= '<li>Le champ "prénom" est vide</li>'."\n";
}
$erreurs .= '</ul>';

if($nbErreur == 0)
    if(mail($my_mail, $mail_subject, $_POST['text'], 'From: '.$_POST['prenom'].'<'.$_POST['email'].'>')) {
        header('Location: http://www.google.fr/);
        die();
    } else {
        $erreurMail = 'Une erreur s\'est produite lors de l\'envoye du mail';
}
?>
Code HTML du kit graphique du haut.
<?php 
if($nbErreur == 0)
    if(empty($erreurMail)) { echo 'Mail envoyé'; }
    else { echo  $erreurMail; }
else {
    echo 'Il y a '.$nbErreur.' erreur(s) :<br/>'."\n".$erreurs;
}
?>
Code HTML du kit graphique du bas.
1
avion-f16 Messages postés 19249 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 15 juin 2024 4 503
16 nov. 2009 à 00:14
La fonction header, tout comme session_start, peut être appelée tant qu'aucun caractères n'a été envoyé, espace compris, via un echo/print/printf ou via l'extérieur des balises PHP.
Je ne vois pas où est le problème car normalement :
- Si le message est envoyé, tu fais une redirection : pas besoin d'afficher quoi que se soit
- Si il y a une erreur, alors tu affiches la page : pas de redirection.
0
Voila le code en gros :

Code HTML du kit graphique du haut.
<?php
// Vérification.
// ....
// Envoi du mail.
if(mail($my_mail, $mail_subject, $_POST['text'], 'From: '.$_POST['prenom'].'<'.$_POST['email'].'>'))
header('Location: http://www.google.fr/);
?>
Code HTML du kit graphique du bas.


Donc je suis obligé d'utiliser sa :s

Que faire ?
0
avion-f16 Messages postés 19249 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 15 juin 2024 4 503
16 nov. 2009 à 00:18
Tu peux aussi faire comme ça :
<?php
// Vérification.
// ....
// Envoi du mail.
if(mail($my_mail, $mail_subject, $_POST['text'], 'From: '.$_POST['prenom'].'<'.$_POST['email'].'>')) {
    header('Location: http://www.google.fr/);
    die();
}
?>
Code HTML du kit graphique du haut.
Code HTML du kit graphique du bas.
0

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

Posez votre question
Non car dans les vérifications, si ya une erreur sa affiche un message d'erreur et donc il faut que ce sois dans le kit graphique :S
0
avion-f16 Messages postés 19249 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 15 juin 2024 4 503
16 nov. 2009 à 00:26
Euh... tu peux stocker les erreurs dans des variables puis les afficher par après ...
0
Un exemple de code ?
0
elseif(...)
echo '$toto = "<p style="color:red;">Erreur</span>"';

Comme cela ?
0
Merci beaucoup, cela fonctionne :)
0
avion-f16 Messages postés 19249 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 15 juin 2024 4 503
16 nov. 2009 à 00:45
D'abord penses à cocher le cercle "Résolu" en haut.
Je l'ai fais, au cas où tu ne reviendrais pas
0
Je l'aurait fait, merci :)
0
avion-f16 Messages postés 19249 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 15 juin 2024 4 503
16 nov. 2009 à 00:51
Ouais mais avec les anonymes on est jamais trop sûr
0