[PHP] header (problème résolut)

header (problème résolut) [PHP] - PHP - Programmation

Marsh Posté le 22-05-2003 à 15:06:30    

je voulais faire une redirection automatique
 
j'ai donc apres recherche decider d'utiliser la fonction header
 
mais elle marche pas , c'est peut etre ma version de php qui est trop vielle, je suis sur php 4.2.0
 
mon code :
 

switch ($page)
      {
          case 1:
             echo "afficher les news :";
             include("Aff_News.php" );
             break ;
          case 2:
             echo "Ajouter un news : <br>";
             include("Ajout_News.php" );
             break ;
          case 3:
             echo "Modifier une news";
             break ;
          case 4:
             echo "Supprimer une news";
             break ;
          default:
             header("Location: Accueil.php" );
//ligne d'erreur
             exit();
      }

 
 
 
l'erreur:
 
Warning: Cannot add header information - headers already sent by (output started at c:\program files\easyphp\www\site\news.php:7) in c:\program files\easyphp\www\site\news.php on line 34


Message édité par nemohp le 23-05-2003 à 10:08:03
Reply

Marsh Posté le 22-05-2003 à 15:06:30   

Reply

Marsh Posté le 22-05-2003 à 15:08:55    

tu ne dois pas faire d'echo avant le header()!

Reply

Marsh Posté le 22-05-2003 à 15:17:23    

ouais mais j'ai pas trop le choix
 
et si je remplace ma ligne en header par ca :  
 
include(test.php)
 
apres je créer une page test.php :
 
<?
   header("location : lapagevoulu.php" )
?>

 
tu pesne que ca va marcher ??  

Reply

Marsh Posté le 22-05-2003 à 15:36:27    

non ca marchera pas les headers seront deja passe par ta page principale

Reply

Marsh Posté le 22-05-2003 à 15:41:25    

put1 raz le bol du php
 
y a quoi comme focntion appart header et les truc en javascript ?

Reply

Marsh Posté le 22-05-2003 à 15:44:22    

en general on utilise des formulaires ...  :o

Reply

Marsh Posté le 22-05-2003 à 15:45:01    

le problème ne vient pas des echo dans le switch, mais de la ligne 7 (ou alentour) ou tu as du faire un echo ou mettre directement du html

Reply

Marsh Posté le 22-05-2003 à 15:46:54    

NemoHP a écrit :

1)put1 raz le bol du php
 
1)y a quoi comme focntion appart header et les truc en javascript ?  


 :sarcastic:  
1) put1 raz le bol des gars qui savent pas programmer en php
2) tu veux quoi la??? Toutes les fonction du php + javscript???
 
 
Sinon pour que tu comprennes un peu, pour le serveur HTTP une page c'est un entête (derniere date de modif, taille de la page, date & heure, type du document....et pleins d'autres infos ds le genre) et le source de la page a afficher.....)
 
Or tu as :
ENTETE
\r\n
CONTENU DE LA PAGE
 
 
si tu fais un echo ou que tu ecris qq chose ds ta page, tu passe ds la partie CONTENU DE LA PAGE, tu ne pourra donc faire un "header" puisque la partie ENTETE est déjà générée....
 
Tu dois donc créer l'entete avant d'afficher le moindre caractère....

Reply

Marsh Posté le 22-05-2003 à 16:06:14    

Attention de ne pas mettre d'espace hors des <? ?> en PHP

Reply

Marsh Posté le 22-05-2003 à 16:07:08    

samuelp a écrit :

Attention de ne pas mettre d'espace hors des <? ?> en PHP

:jap:
c'est vraiment l'erreur à la con ca :sweat:

Reply

Marsh Posté le 22-05-2003 à 16:07:08   

Reply

Marsh Posté le 22-05-2003 à 16:28:27    

bon c pas vrai, g pas raz le bol du php  :ange:
 
j'apprend et mais c'est pas facile tout seul
 
 
le truc que je voulait faire en faite , c'est si un gas rentre manuellement une adresse genre :
 news.php?page=sdhfgjfg (c'est a dire une autre valeur que 1 , 2 , 3 ou 4),ca redirige vers page news.php (la page sans paramettre en faite)
 
je sais pas si je suis bien claire car c pas facile a expliquer comme ça.

Reply

Marsh Posté le 22-05-2003 à 16:31:39    

NemoHP a écrit :

bon c pas vrai, g pas raz le bol du php  :ange:
 
j'apprend et mais c'est pas facile tout seul
 
 
le truc que je voulait faire en faite , c'est si un gas rentre manuellement une adresse genre :
 news.php?page=sdhfgjfg (c'est a dire une autre valeur que 1 , 2 , 3 ou 4),ca redirige vers page news.php (la page sans paramettre en faite)
 
je sais pas si je suis bien claire car c pas facile a expliquer comme ça.


c'est bien ce que je disais marre de ceux qui savent pas programmer et qui accusent le langage!!!
 

Code :
  1. switch($page){
  2.   case "sdhfgjfg" : header("location:news.php" ); break;
  3.   case "aaa" : header("location:accueil.php" ); break;
  4.   etc...
  5. }


 
Est-ce que ca l'air franchement dur????


Message édité par harrysauce le 22-05-2003 à 16:32:13
Reply

Marsh Posté le 22-05-2003 à 16:33:37    

je vais essayer de me rabbattre vers un code javascript plutot, j'ai récupe ça :
 

 3  // la fonction de redirection
 4  function redir($url){
 5  echo '<script language="javascript">';
 6  echo 'window.location="',$url,'";';
 7  echo '</script>';
 8  }  
 9  

Reply

Marsh Posté le 22-05-2003 à 16:34:35    

NemoHP a écrit :

je vais essayer de me rabbattre vers un code javascript plutot, j'ai récupe ça :
 

 3  // la fonction de redirection
 4  function redir($url){
 5  echo '<script language="javascript">';
 6  echo 'window.location="',$url,'";';
 7  echo '</script>';
 8  }  
 9  

 

le code que je t'ai mis au dessus marche tres bien....et il fait ce que tu veux...
 
EDIT : ah non ca fait pas ce que tu veux, je reprends...


Message édité par harrysauce le 22-05-2003 à 16:35:42
Reply

Marsh Posté le 22-05-2003 à 16:36:22    

c'est bon ca marche
 
par contre le fonction header restera pour moi un mystere, j'ai pourtant vu un paquet de tutorial dessus et de topics, mais bon tant que ca marche comme je fais !!!

Reply

Marsh Posté le 22-05-2003 à 16:38:25    

Code :
  1. if ($page != 1 && $page != 2 && $page != 3 && $page != 4){
  2.    header("location:news.php" );
  3. }
  4. switch ($page){
  5. case 1 : ...
  6. case 2 : ...
  7. case 3 : ...
  8. case 4 : ...
  9. }


Essaie ca, on sait jamais

Reply

Marsh Posté le 22-05-2003 à 16:39:13    

NemoHP a écrit :

c'est bon ca marche
 
par contre le fonction header restera pour moi un mystere, j'ai pourtant vu un paquet de tutorial dessus et de topics, mais bon tant que ca marche comme je fais !!!

ben faut juste qu'aucun caractere ne soit ecrit dans la page HTML avant de mettre un header...

Reply

Marsh Posté le 22-05-2003 à 16:40:29    

quand je dit que un gas rentre ?page="sdhfgjfg", je voulait dire si un gas rentre n'importe quel parramtre hors de ce qui sont valide
 
"sdhfgjfg" c'est n'importe quoi que g taper, ça aurai pu etre "5", vu "5" est hors de met valeur du CASE
 
voila merci les gas

Reply

Marsh Posté le 22-05-2003 à 16:45:50    

harrysauce>   je l'avoue, je suis une merde   :jap:  
              (mais qui n'a jamais été une merde dans sa vie :D )
              vive le php  :love:
 
 
je réessayerais le header une autre jour  :na:  

Reply

Marsh Posté le 23-05-2003 à 09:51:35    

bon voila on est un autre jour donc je retente la fonction header.
 
j'ai fait tout bien comme on ma dt, mais ca veut tjrs pas marché.
 
Le faite que je travail sur php 4.2 pose t'il probleme
 
 
voici le code qui marche tjrs pas :
 
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>Titre</title>
</head>
<body>
<?
header("Location: accueil.php" );
?>
</body>
</html>

 
on peut pas faire plus simple.

Reply

Marsh Posté le 23-05-2003 à 09:58:34    

Code :
  1. <?
  2. header("Location: accueil.php" );
  3. ?><html>
  4. <head>
  5. <meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
  6. <title>Titre</title>
  7. </head>
  8. <body>
  9. blabla
  10. </body>
  11. </html>


il faut mettrre l'appel à header AVANT de retourner du code html! La fonction header fait une redirection, amha tu cherches à faire un include là, non?


Message édité par dropsy le 23-05-2003 à 09:59:03
Reply

Marsh Posté le 23-05-2003 à 10:01:48    

pour info, la page de la doc sur header: http://fr.php.net/manual/fr/function.header.php
tu y trouveras surement toutes les infos pour résoudre ton problème ;)

Reply

Marsh Posté le 23-05-2003 à 10:06:32    

aaaaaaaaaaaaaahhhhhhhhhhhhhhhhhh merci dropsy
 
enfin la réponse que je cherchais depuis 2 jours
 
 
merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci  
 
vive dropsy    :bounce:  :bounce:  :bounce:  :bounce:  :bounce:  
 
 
a yes merci , put1 chui trop content je pouvait plus j'avllais pété un plomb avec cette fonction
 
par contre j'ai vu des exmple ou le header était apres le <html> et ca fonctionnait chez eux, donc c bizarre
 
mais la c bon ca amrche enfin  
 
encore merci, j'en peux plsu chui trop heureux, yes , yes yes
 
youhouuuuuuuuuuu
 
merci
 
bon aller moi je vais prendre ma pause la merci encore une fois    :jap:  :jap:  :jap:  :jap:  :jap:  

Reply

Marsh Posté le 23-05-2003 à 10:08:44    

NemoHP a écrit :

aaaaaaaaaaaaaahhhhhhhhhhhhhhhhhh merci dropsy
 
enfin la réponse que je cherchais depuis 2 jours
 
 
merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci merci  
 
vive dropsy    :bounce:  :bounce:  :bounce:  :bounce:  :bounce:  
 
 
a yes merci , put1 chui trop content je pouvait plus j'avllais pété un plomb avec cette fonction
 
par contre j'ai vu des exmple ou le header était apres le <html> et ca fonctionnait chez eux, donc c bizarre
 
mais la c bon ca amrche enfin  
 
encore merci, j'en peux plsu chui trop heureux, yes , yes yes
 
youhouuuuuuuuuuu
 
merci
 
bon aller moi je vais prendre ma pause la merci encore une fois    :jap:  :jap:  :jap:  :jap:  :jap:  


 
Pour eviter ce genre desagrement tu peux utiliser les classes PHP qui te permettront d'afficher le contenu apres sollicitation (exemple : classe page avec operation display() )

Reply

Marsh Posté le 23-05-2003 à 10:17:37    

tu pourrait etre plus explicite, car je te suis pas
 
de quel désagréments tu parle ? (car j'en est u plein  :p  )

Reply

Marsh Posté le 23-05-2003 à 10:20:46    

heureusement que dropsy t'avais déjà indiqué la solutoin hier, que Harrysauce t'avais expliqué la différence entre headers et contenu... Tu es sûr que tu as lu les réponses proposées ?


---------------
Incongru : une FAQ abandonnée sur les Standards du Web - FAQ périmée de blabla@Prog
Reply

Marsh Posté le 23-05-2003 à 10:22:52    

NemoHP a écrit :

tu pourrait etre plus explicite, car je te suis pas
 
de quel désagréments tu parle ? (car j'en est u plein  :p  )


 
LEs header deja envoyes.
 Dans ta methode display tu genere ton code HTML (entre les Tags Body)
 Avant tu fais un appel aux methodes header et tail de ta classe pour encadrer le corp HTML
 
 Ainsi, cela t'evites les problemes de savoir si les headers sont deja envoyés (probleme recurrent pour la redirection et l'utilisation des cookies/sessions )

Reply

Marsh Posté le 23-05-2003 à 10:25:54    

:jap: merci pour tes remerciements
 
samuelp doit te parler de la fonction ob_start: http://fr.php.net/manual/fr/function.ob-start.php et de ses consoeurs qui te permettent de bufferiser la sortie et donc d'utiliser header même après les balises html.
 
gm_superstar> il me semblait bien aussi, mais ça devait pas être très clair. et puis l'essentiel c'est que son problème réglé

Reply

Marsh Posté le 23-05-2003 à 10:26:17    

tu a raison mais j'avais pas compris comme ca
 
quand il parlait de contenu je comprenais <body>
 
je m'excuse de pas avoir compris ca, probleme de jeunesse vocubularistique en langage internet surement  :D  
 
désolé  :jap:

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed