IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

ou placer le header


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 105
    Par défaut ou placer le header
    bonjour,je précise, je debute
    je reprend un script existant que j'avais fait avec un ami et je souhaite le modifier légèrement:
    lorsqu'un client valide son formulaire, le contenu est envoyé par mail,
    puis un message apparait pour le prévenir que le mail est bien envoyé.
    Les clients semblent ne pas voir ce message (pourtant en rouge et en très gros!!!)
    je souhaite donc faire un header.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    			//Redirection
    			header("location: mail_ok.php");
    			exit;
    Seulement, je ne parviens pas à le placer au bon endroit dans mon script: cela ne fonctionne pas
    voici mon script
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
     
     
    	$MailDesitataire = "*****";
     
    	//Initialisation var
    	$Msg ='';
     
    	//Mise en session des valeurs du formulaire		
    	while ( list($cle, $val) = each( $_POST ) ){ 		 
    		$_SESSION[$cle] =$_POST[$cle]; 		
    	}
     
    	$Contact_LeNom='';
    	$Contact_LePrenom='';
    	$Contact_LeTelephone='';
    	$Contact_LeEmail='';
    	$Contact_LeMessage='';
     
     
    	if (isset($_SESSION['Contact_Nom'])){ 
    		$Contact_LeNom= htmlentities( stripslashes($_SESSION['Contact_Nom']));
    	}
    	if (isset($_SESSION['Contact_Prenom'])){ 
    		$Contact_LePrenom= htmlentities( stripslashes($_SESSION['Contact_Prenom']));
    	}
    	if (isset($_SESSION['Contact_Telephone'])){ 
    		$Contact_LeTelephone= htmlentities( stripslashes($_SESSION['Contact_Telephone']));
    	}
    	if (isset($_SESSION['Contact_Email'])){ 
    		$Contact_LeEmail= htmlentities( stripslashes($_SESSION['Contact_Email']));
    	}
    	if (isset($_SESSION['Contact_Message'])){ 
    		$Contact_LeMessage= htmlentities( stripslashes($_SESSION['Contact_Message']));
    	}
     
    	//Si validation du formulaire
    	if(isset($_POST['Submit'])){
     
    		//Verif champ obligatoire
    		if(empty($_POST['Contact_Nom'])){		
    			$Msg .= "Erreur de saisie : Nom !";			
    		}		
    		if(empty($_POST['Contact_Prenom'])){		
    			$Msg .= "<BR>Erreur de saisie : Prenom !";				
    		}
    		if( !eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,6})$", $_POST['Contact_Email']) ){		
    			$Msg .= "<BR>Votre adresse email semble invalide !";				
    		}
    		if(empty($_POST['Contact_Message'])){		
    			$Msg .= "<BR>Merci de rédiger votre message !";				
    		}
     
    		//Vérif OK
    		if( empty($Msg)){
     
    $MsgMail="Date d'envoie du Mail : ".date("d/m/Y  H:i:s")."\n\n";	
    $MsgMail.= "Nom : ".$_POST['Contact_Nom']."\n";
    $MsgMail.= "Prenom : ".$_POST['Contact_Prenom']."\n";
    $MsgMail.= "Telephone : ".$_POST['Contact_Telephone']."\n";
    $MsgMail.= "Email : ".$_POST['Contact_Email']."\n";
    $MsgMail.= "Message : ".$_POST['Contact_Message']."\n";
     
    $sujet="Demande de renseignements depuis votre site internet";
     
    $headers = "from: <".$_POST['Contact_Email']."> \n";
    $headers .= "reply-to:".$_POST['Contact_Email']."\n";		
    $headers .= "x-sender: <".$MailDesitataire."> \n";
    $headers .= "x-mailer: php\n";
    $headers .= "return-path: <".$MailDesitataire."> \n";
    $headers .="content-transfer-encoding: 8bit\n";
     
    if ( mail ($MailDesitataire, $sujet, $MsgMail,$headers) ){ $Msg ="<p class=\"style3\">Votre message &agrave; &eacute;t&eacute; envoyer avec succ&egrave;s.<br />
    Nous vous r&eacute;pondrons dans les meilleures d&eacute;lais.</p>";
     
    }else{$Msg ="<p class=\"style3\">
    Erreur lors de l'envoi de votre e-mail !</p>";}	
    }
    else{$Msg= "<p class=\"style3\">".$Msg."</p>";}
    }
    ?>
    j'ai essayé plusieurs choses mais cela ne marche pas.
    merci de votre aide

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Très logiquement tu ne peux pas afficher un message et rediriger la page en meme temps.
    Si tu souhaites rediriger après quelques secondes, il faut le faire en javascript ou en HTML.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre Expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Par défaut
    Bonsoir,

    ce n'est pas l'entête Location qu'il faut utiliser mais Refresh :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    header("Refresh: 3; URL=/index.php")

  4. #4
    Membre éprouvé Avatar de Shinji62
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 135
    Par défaut
    Pour quoi faire un header..... tu peux afficher un message simplement non?
    manque juste le echo de ton $Msg

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 105
    Par défaut ou placer le header
    merci pour toutes ces réponses
    toutefois elles ne sont pas adaptés:
    pour répondre à shinji62, mon script comporte bien un "echo $mess" et cela fonctionne bien.
    toutefois, bien que déjà très gros, le message ne semble pas être lu par le client et il me valide plusieurs fois le formulaire,
    je souhaite simplement un transfert sur un autre fichier dès la validation du formulaire.
    La proposition de thomas est interessante mais pas adapté, pour les mêmes raisons.
    en clair, je souhaitais modifier
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    			if ( mail ($MailDesitataire, $sujet, $MsgMail,$headers) ){
    				$Msg =
    				"<p class=\"style3\">
    				Votre message &agrave; &eacute;t&eacute; envoyer avec succ&egrave;s.<br />
    				Nous vous r&eacute;pondrons dans les meilleures d&eacute;lais.
    				</p>";
    en
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    			if ( mail ($MailDesitataire, $sujet, $MsgMail,$headers) ){
    //Redirection
    header("location: mail_ok.php");
    			exit;
    mais le transfert ne se fait pas ( je reste sur mon formulaire ) et le message suivant apparait:
    Warning: Cannot modify header information - headers already sent by (output started at /homez.110/creditsr/www/normes/criterebnp3.php:3) in /homez.110/creditsr/www/reponse.php on line 222
    merci

  6. #6
    Membre Expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Par défaut
    Bonsoir,

    étant donné que tu écrivais un message puis tentais de faire une redirection, nous avons nécessairement pensé que tu souhaitais faire une redirection après la lecture du message par l'internaute, d'où nos réponses "inadaptées".

    Aussi, si tu nous avais donné le message d'erreur dès le début, nous aurions directement su quelle était la cause de ton souci : ton envoi du texte ou du HTML au navigateur avant même d'ouvrir ta session.

    L'appel de la fonction header() doit être placé avant tout envoi de caractères, c'est à dire en haut de tes scripts (ou du moins de ton HTML), y compris si le fichier est inclu.

    Cette erreur est décrite dans la FAQ :
    http://php.developpez.com/faq/?page=...s_already_sent

    Mais sache que si tu rediriges l'internaute avec l'entête Location, il ne verra pas ton message... il faut utiliser l'entête que j'ai explicitée dans mon message plus haut.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 15/02/2015, 01h09
  2. Placer du texte par dessus un élément type "header slider"
    Par Dr.Wily dans le forum Webdesign & Ergonomie
    Réponses: 1
    Dernier message: 23/03/2012, 11h08
  3. Placer header en haut de page
    Par Dutrizac dans le forum Mise en page CSS
    Réponses: 1
    Dernier message: 07/10/2009, 09h33
  4. comment placer des images en absolu dans un header
    Par ml1234 dans le forum Mise en page CSS
    Réponses: 3
    Dernier message: 17/05/2009, 16h41
  5. Réponses: 5
    Dernier message: 17/06/2006, 21h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo