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 :

redirection header et récupération de variable


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 187
    Points : 50
    Points
    50
    Par défaut redirection header et récupération de variable
    bonjour, voici mon pb :
    comment exploiter a bon escient les header();

    en local mon code marche tres bien
    mais en ligne header(); ne marche pas, et la redirection ne se fait pas

    en effet j'ai bien vu la doc :
    http://php.net/manual/fr/function.header.php

    auriez vous une solution à mon pb sachant que je l'ai mise a la fin pour pouvoir récupérer la variable $nomDossier

    merci

    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
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
     
    <?php
    //----------------------- CONNEXION A LA BDD ------------------------
    include("../includes/sql_connect.php");
     
    //----------------------- RECUPERATION ET INITIALISATION DE TOUTES LES VARIABLES qui peuvent etre transmissent dans l'url ------------------------
    //----- variable idNews ------ 	
    if (isset($_GET['idNews']))	// je vérifie avec GET si idClient existe dans l'url, si oui c'est une suppression
    {
    	$idNews = intval($_GET['idNews']);	//intval () renvois un entier ou 0 en cas d'echec
     
    	// puis je supprime le client de la BDD
    	$req = $bdd->prepare('DELETE FROM news_slider WHERE idNews = :idNews');
    	$req->execute(array(
    	'idNews' => $idNews
    	));
    	//echo '<br />Le client à bien été supprimé !';
     
     
     
    }
    if (isset($_POST['idNews']))	// sinon avec POST si idNews existe à été posté, si oui c'est que c'est un nouveau ou une modif
    {			
    	// si oui on récupère les données postées
    	$idNews = stripslashes($_POST['idNews']);
    	$nomNews = stripslashes($_POST['nomNews']);
    	$descriptionNews = stripslashes($_POST['descriptionNews']);
    	$lienNews = stripslashes($_POST['lienNews']);
    	$dateDebutPublicationNews = stripslashes($_POST['dateDebutPublicationNews']);
    	$dateFinPublicationNews = stripslashes($_POST['dateFinPublicationNews']);
    	$publierNews = stripslashes($_POST['publierNews']);
     
    	if ($_POST['idNews'] == 0)	// c'est que l'on veut créer un nouveau produit
    	{ 
     
    		// on créer la nouvelle entrée en inserant les données
    		$req = $bdd->prepare('INSERT INTO news_slider(nomNews, descriptionNews, lienNews, dateDebutPublicationNews, dateFinPublicationNews, dateCreationNews, dateModifNews, publierNews) VALUES(:nomNews, :descriptionNews, :lienNews, :dateDebutPublicationNews, :dateFinPublicationNews, NOW(), NOW(), :publierNews)');
    		$req->execute(array(
    			'nomNews' => $nomNews,
    			'descriptionNews' => $descriptionNews,
    			'lienNews' => $lienNews,
    			'dateDebutPublicationNews' => $dateDebutPublicationNews,
    			'dateFinPublicationNews' => $dateFinPublicationNews,
    			'publierNews' => $publierNews,
    			));
     
    			//echo 'Le client '.$responsable.', de '.$societe.' à bien été ajouté !';
     
    		//puis je récupère l'id du produit que je viens d'enregistrer, ceci me servira a renommer le dossier qui contiendra ses photos
    		$reponse = $bdd->query("SELECT idNews FROM news_slider ORDER BY idNews DESC LIMIT 0, 1");
    		while ($donnees = $reponse->fetch())
    		{
    			$nomDossier = $donnees['idNews'];
    		}
    	}
     
    	else //si différent de 0 c'est une modif
    	{
    		// on remplace les données				
    		$req = $bdd->prepare('UPDATE news_slider SET
    					idNews = :idNews,
    					nomNews = :nomNews,
    					descriptionNews = :descriptionNews,
    					lienNews = :lienNews,
    					dateDebutPublicationNews = :dateDebutPublicationNews,
    					dateFinPublicationNews = :dateFinPublicationNews,
    					dateModifNews = NOW(),
    					publierNews = :publierNews,
    					WHERE idNews = :idNews');
     
    		$req->execute(array(
    					'idNews' => $idNews,
    					'nomNews' => $nomNews,
    					'descriptionNews' => $descriptionNews,
    					'lienNews' => $lienNews,
    					'dateDebutPublicationNews' => $dateDebutPublicationNews,
    					'dateFinPublicationNews' => $dateFinPublicationNews,
    					'publierNews' => $publierNews,
    					));
     
    		//puis si c'est une modif, je récupère l'id du projet ceci me servira a renommer son dossier
    		$nomDossier = $idNews;
     
    		//echo 'Le client '.$responsable.', de '.$societe.' à été modifié !';
    	}
    }
     
    ?>
    <?php
    //*** redirection ***
    // si j'ai appuyé sur le btn enregistrer
    {
    $redirection = 'news-liste.php?message=1';
    }
    // si j'ai appuyé sur le btn appliquer
    if(isset($_POST['appliquer'])) 
    {
    $redirection = 'news-formulaire.php?idNews='.$nomDossier;
    }
     
    header('Location:'.$redirection);
    exit;
    ?>

  2. #2
    Membre actif
    Inscrit en
    Septembre 2004
    Messages
    450
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 450
    Points : 267
    Points
    267
    Par défaut
    ta ligne 1 semble vide, hors dans la doc il est spécifié:
    <<<
    N'oubliez jamais que header() doit être appelée avant que le moindre contenu ne soit envoyé, soit par des lignes HTML habituelles dans le fichier, soit par des affichages PHP. Une erreur très classique est de lire un fichier avec include ou require, et de laisser des espaces ou des lignes vides, qui produiront un affichage avant que la fonction header() ne soit appelée. Le même problème existe avec les fichiers PHP/HTML standards.
    >>>

    est-ce que cela ne peut pas venir de là ?

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 187
    Points : 50
    Points
    50
    Par défaut
    non je viens de l'enlever, et pas mieux
    le fais que mon header soit tout a la fin n'est pas gènant???

    en fait si j'ai bien compris,
    tous les affichage avant (echo, print, balises html...)

    poutant dans ce code ca ne passe pas non plus

    j'ai ce message d'erreur :
    Warning: Cannot modify header information - headers already sent by (output started at /www/page-livre-or.php:32) in /www/page-livre-or.php on line 107
    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
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
     
    <?php
    //----------------------- CONNEXION A LA BDD ------------------------
    include("includes/sql_connect.php");
     
    include("includes/fonctions.php"); // appel aux fonctions
     
    //----------------------- RECUPERATION ET INITIALISATION DE TOUTES LES VARIABLES qui peuvent etre transmissent dans l'url ------------------------
    if(isset ($_GET['idPages']))
    {
    	$idPages = intval($_GET['idPages']);
     
    	//je recupère les infos du contact
    	$reponse = $bdd->query("SELECT *
    							FROM configuration_generale, pages
    							JOIN contacts_livre_or
    							ON pages.idPages = contacts_livre_or.idPages
    							JOIN contacts
    							ON contacts_livre_or.idContacts  = contacts.idContacts 
    							WHERE pages.idPages = $idPages
    							AND contacts.publierContacts = 1 
    							") or die(print_r($bdd->errorInfo()));
     
    	while($donnees = $reponse->fetch())//mysql_fetch_array, transforme les données en vrac de la table mysql, en une variable ordonnée en tableau (array)
    	{
    		$mailContacts = $donnees['mailContacts'];
     
    		$nomSiteConfigGenerale = $donnees['nomSiteConfigGenerale'];
    	}
    }
    ?>
    <?php
    // si $_POST['envoyer'] existe c'est que le formulaire a été envoyer (via le btn envoyer)
    if(isset($_POST['envoyer']))
    {
    	// récuperation des variables provenant du formulaire
    	/*
    	if(isset($_POST['demande'])) //je suis obligé de vérifier si $demande existe car c'est une chekbox (les checkbox et les radio si elles ne sont pas cochées n'exite pas, elle sont pas envoyée)
    	{
    		$demande = $_POST['demande'];
    	}
    	else
    	{
    		$demande = ''; // la variable est vide
    	}
    	*/
     
    	// je sécurise mes variables avant de les utiliser
    	/* contre les SQL injection et htmlspecialchars qui va transformer les chevrons des balises HTML <> en &lt; et &gt; respectivement. 
    	Cela provoquera l'affichage de la balise plutôt que son exécution.*/
    	$nom = htmlspecialchars($_POST['nom']);
    	$mail= htmlspecialchars($_POST['mail']);
    	$site = htmlspecialchars($_POST['site']);
    	$message = htmlspecialchars($_POST['message']); 
     
    	//vérifie si les variable ne sont pas vident
    	if(!empty($nom) AND !empty($mail) AND !empty($message))
    	{
    		//E-mail auquel sera envoyé le formulaire
    		$destinataire = $mailContacts;
     
    		//objet du mail envoyé
    		$objet = 'Réception d\'infos du site '.$nomSiteConfigGenerale;
     
    		// création du message, les \n permettent de faire un saut de ligne
    		// Chaque ligne doit être séparée par un caractère LF (\n). 
    		$messageTotal = "
    Ce nouveau message vient d'être poster dans la rubrique livre d'or, \n
    Vous pouvez l'afficher sur le site, en le mettant en statut publier dans l'admin\n
    -------------------------------\n
    Nom : $nom\n 
    Mail : $mail\n 
    Site : $site\n 
    Message : $message\n
    -------------------------------
    ";
     
     
    		// Les lignes ne doivent pas comporter plus de 70 caractères.
    		// Dans le cas où nos lignes comportent plus de 70 caractères, nous les coupons en utilisant wordwrap()
    		$messageTotal = wordwrap($messageTotal, 70);
     
    		// Pour envoyer un mail HTML, l'en-tête Content-type doit être défini
    		$headers = 'MIME-Version: 1.0' . "\r\n";
    		$headers .= 'Content-type: text/plain; charset=utf-8' . "\r\n";//ou iso-8859-1 selon encodage
    		// mettre From: pour que cette adresse mail apparaitera en tant qu'expéditeur  
    		$headers .= 'From: webmaster@'.$nomSiteConfigGenerale;
     
    		// j'enregistre le message dans la bdd
    			$req = $bdd->prepare('INSERT INTO messages_livre_or(auteurMessagesLivreOr, mailMessagesLivreOr, siteMessagesLivreOr, messageMessagesLivreOr, dateCreationMessagesLivreOr) 
    													VALUES(:auteurMessagesLivreOr, :mailMessagesLivreOr, :siteMessagesLivreOr, :messageMessagesLivreOr, NOW())');
    			$req->execute(array(
    				'auteurMessagesLivreOr' => $nom,
    				'mailMessagesLivreOr' => $mail,
    				'siteMessagesLivreOr' => $site,
    				'messageMessagesLivreOr' => $message,
    				));
     
    		// On envoi le mail
    		if( mail($destinataire, $objet, $messageTotal, $headers))
    		{
    			//message d'alerte 'Le mail à bien été envoyé'
    			$alerte = 3;
     
    			// puis je fais un redirection pour détruire tous mes $POST Pour eviter le renvois des meme donéées si je fais F5
    			header('Location: page-livre-or.php');
    		}
    je n'ai pas mis la suite du code (inutile)

  4. #4
    Membre régulier Avatar de l.laurent60
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    276
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 276
    Points : 117
    Points
    117
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Warning: Cannot modify header information - headers already sent by (output started at /www/page-livre-or.php:32) in /www/page-livre-or.php on line 107
    C'est bien cela tu ne peux de redirection après une sortie...
    ou fait la dans ton fichier de redirection

  5. #5
    Membre régulier Avatar de l.laurent60
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    276
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 276
    Points : 117
    Points
    117
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Warning: Cannot modify header information - headers already sent by (output started at /www/page-livre-or.php:32) in /www/page-livre-or.php on line 107
    C'est bien cela tu ne peux de redirection après une sortie...
    ou fait la dans ton fichier de redirection

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 187
    Points : 50
    Points
    50
    Par défaut
    c'est a dire ?
    avec des détails car je suis un peu neuneu!
    il ya une sortie a quel endroit

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 187
    Points : 50
    Points
    50
    Par défaut
    c'était pas loin ma toute premiere balise php, n'était pas collée a gauche gauche ............

    merci

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

Discussions similaires

  1. Header et récupération de variable
    Par pounie dans le forum Langage
    Réponses: 2
    Dernier message: 10/02/2010, 12h29
  2. Redirection header suite à variable session
    Par jive dans le forum Langage
    Réponses: 13
    Dernier message: 05/07/2006, 01h01
  3. [C#] Récupération des variables system...
    Par smyley dans le forum Windows Forms
    Réponses: 7
    Dernier message: 04/08/2005, 11h39
  4. Récupération de variable
    Par Fred- dans le forum ASP
    Réponses: 13
    Dernier message: 17/06/2004, 20h13
  5. Récupération de variables dynamiques complexes
    Par ludoboy dans le forum ASP
    Réponses: 7
    Dernier message: 24/05/2004, 17h51

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