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

PHP & Base de données Discussion :

header() Location php


Sujet :

PHP & Base de données

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Webplanneur
    Inscrit en
    Septembre 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Webplanneur
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2014
    Messages : 9
    Points : 5
    Points
    5
    Par défaut header() Location php
    Bonjour tout le monde
    j'ai un soucis avec la fameuse erreur
    Warning: Cannot modify header information - headers already sent by output started at C:\wamp\www\...\index.php:155) in C:\wamp\www\...\message.php on line 69
    Cela fait plusieurs jours que je galère à trouver une solution a cette erreur, il y a bien la solution avec la mise en cache ob_start() mais cela ne m’intéresse pas.

    En gros j'ai une page index avec le doctype html en dur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr"> 
    <head>
    <title>easy</title>
    <meta name="Description" content="''">
    <meta name="Keywords" content="''">
    et juste à la suite je commence mon php avec session et tout mets autres fichiers php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?php
    session_start();
    include 'configs.php';
    ecHo '<table width="999" border="0" align="center" cellpadding="0" cellspacing="0">'; 
    ecHo '<tr><td width="985"><table width="100%" border="0" cellpadding="0" cellspacing="0">';
    ............................
    Le soucis étant que j'ai un ficher message.php qui redirige si jamais un fichier php ne si trouve pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     switch ($button[1]) 
    			    {
    			    	case 1:
    			    		include("test.php");
    			    		break;
     
    			    	default:			    		
    			    		header("Location: index.php"); 
    			    		exit();
    			    		break;
                                 }
    et le header() me renvoi l'erreur du dessus.

  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
    Points : 44 155
    Points
    44 155
    Par défaut
    Il n'y a pas de miracle possible, il ne faut pas d'affichage avant la redirection.
    Plus simplement et efficacement qu'utiliser un buffering, il suffirait que tu fasses ton test en premier lieu.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Webplanneur
    Inscrit en
    Septembre 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Webplanneur
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2014
    Messages : 9
    Points : 5
    Points
    5
    Par défaut
    le fichier test fonctionne bien ( c'est un fichier de contact en gros que j'inclus dans le body dans index.php ), mais je ne comprend pas, comment ça pas d'affichage avant la redirection ??
    j'ai que des conditions et le switch, aucun affichage dedans

  4. #4
    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
    Points : 44 155
    Points
    44 155
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    Ca, c'est déjà une donnée fournie au navigateur.
    À partir de là, on ne peut plus changer le document, donc pas faire une redirection.

    D'ailleurs même dans la logique de déroulement de ton code, c'est quand même normal de décider si tu rester sur cette page ou si tu va ailleurs avant d'avoir envoyé quoi que ce soit (raison pour laquelle je disais que manipuler le buffering ce n'était pas très propre non plus).
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    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
    Points : 44 155
    Points
    44 155
    Par défaut
    D'ailleurs c'est le même sujet pour le session_start(), il doit être avant ton HTML :

    Ton fichier doit simplement commencer comme ça :
    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
    <?php
    session_start();
    include 'configs.php';
     
    $hostnam  = ($_SERVER [ 'HTTP_HOST']); 
    //echo '<pre>', print_r($GLOBALS), '</pre>'; 
    //echo '<pre>', print_r($_POST), '</pre>'; 		
    //echo '<pre>', print_r($_SESSION), '</pre>'; 		
     
    //-------------------------------------------------------------
    if (isset($_REQUEST['page'])) 
    	{$page=$_REQUEST['page'];}
    	else
    	{$page="";}	
     
    if ((trim($page)=='message') && (strlen($lag)==0)  ) 
    	{
    		include ('message.php');
    	}
    Le HTML va après.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

Discussions similaires

  1. [Forum] Header ('location:.php');
    Par bouzakher dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 4
    Dernier message: 02/07/2009, 12h55
  2. Réponses: 12
    Dernier message: 05/11/2008, 20h43
  3. Réponses: 3
    Dernier message: 28/01/2008, 22h18
  4. Erreur de redirection (header("location /page.php");)
    Par pierrot10 dans le forum Langage
    Réponses: 6
    Dernier message: 16/08/2006, 08h43
  5. Mon header("Location: page.php"); ne fonctionne pa
    Par Flushovsky dans le forum Langage
    Réponses: 17
    Dernier message: 24/03/2006, 23h49

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