[Résolu][PHP] Problème avec header()

Problème avec header() [Résolu][PHP] - PHP - Programmation

Marsh Posté le 04-07-2006 à 10:35:56    

Bonjour à tous !
 
Je sais que ce sujet a déjà été vu et revu mais je n'ai pas trouver de réponse à mon prblème !  :pt1cable:  
 
J'ai créer un site en pseudo-frame (je sais, je sais, c'est pas bien mais je ne sais comment faire autrement [:alisson] ). J'ai créer la page d'accueil de cette façon :
 

Code :
  1. <?php
  2. include('link.php');
  3. ?>
  4. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  5. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
  6. <head>
  7.  <title>RéférenceS MUSIQUE</title>
  8.  <link rel="stylesheet" media="screen" type="text/css" title="Design" href="./style.css" />
  9.  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
  10.  <meta name="Author" content="MARCHAL Simon" />
  11.  <meta name="Description" content = "Le site de références. Toutes les styles musicaux réunis en un seul et unique endroit. La plus grande base de donnée sur la musique." />
  12.  <meta name="keywords" content="références, référence, musique, musiques, critique, critiques, reportage, reportages, avis" />
  13. </head>
  14. <body>
  15.  ...
  16. </body>
  17. </html>


 
Dans le fichier link.php j'ai ceci :
 

Code :
  1. <?php
  2. if (empty($rubrique)) {
  3.  header("Location: home.php" );
  4. } else {
  5.  $rubrique_num = '?rubrique='.$_POST;
  6.  switch($_POST['rubrique']) {
  7.   case'1':
  8.    header("Location: home.php$rubrique_num" );
  9.    $compteur_news++;
  10.   break;
  11.   case'2':
  12.    header("Location: home.php$rubrique_num" );
  13.    $compteur_references++;
  14.   break;
  15.   case'3':
  16.    header("Location: home.php$rubrique_num" );
  17.    $compteur_votre_avis++;
  18.   break;
  19.   case'4':
  20.    header("Location: home.php$rubrique_num" );
  21.    $compteur_radio++;
  22.   break;
  23.   case'5':
  24.    header("Location: http://forum.adressedemonsite.com/index.php" );
  25.    $compteur_forum++;
  26.   break;
  27.   case'6':
  28.    header("Location: home.php$rubrique_num" );
  29.    $compteur_livre_dor++;
  30.   break;
  31.   case'7':
  32.    header("Location: home.php$rubrique_num" );
  33.    $compteur_faqs++;
  34.   break;
  35.   case'8':
  36.    header("Location: home.php$rubrique_num" );
  37.    $compteur_liens++;
  38.   break;
  39.   case'9':
  40.    header("Location: home.php$rubrique_num" );
  41.    $compteur_contact++;
  42.   break;
  43.   default:
  44.  }
  45. }
  46. ?>


 
le menu est comme ceci :
 

Code :
  1. <p class="menu"><a href="home.php?rubrique=1" class="menu">NEWS</a></p>
  2. <p class="menu"><a href="home.php?rubrique=2" class="menu">Références</a></p>
  3. <p class="menu"><a href="home.php?rubrique=3" class="menu">Votre avis</a></p>
  4. <p class="menu"><a href="home.php?rubrique=4" class="menu">Radio</a></p>
  5. <p class="menu"><a href="home.php?rubrique=5" target="_blank" class="menu">Forum</a></p>
  6. <p class="menu"><a href="home.php?rubrique=6" class="menu">Livre d'or</a></p>
  7. <p class="menu"><a href="home.php?rubrique=7" class="menu">FAQs</a></p>
  8. <p class="menu"><a href="home.php?rubrique=8" class="menu">Liens</a></p>
  9. <p class="menu"><a href="home.php?rubrique=9" class="menu">Contact</a></p>


 
Mon problème, c'est que lorsque je clique sur forum, j'ai bien une nouvelle page mais je suis toujours sur la page home.php ! Je ne comprend pas pourquoi !
 
Est-ce que ma condition est bonne ? (je débute en php)
Est-ce que j'ai un envoie de donnée html avant le header() ? (ce qui annulerai cette fonction, mais m'afficherai une erreur [qui ne s'affiche pas])
 
De plus, je voudrais ne pas utiliser de javascript dans mon code !
 
Voilà ! Si vous pouvez m'aider, ça ne serai pas de refu, là je bloque !  :heink:


Message édité par traskarin le 04-07-2006 à 11:33:54
Reply

Marsh Posté le 04-07-2006 à 10:35:56   

Reply

Marsh Posté le 04-07-2006 à 10:50:19    

essaye avec un exit apres le header

Code :
  1. header();
  2. exit;


---------------
my flick r - Just Tab it !
Reply

Marsh Posté le 04-07-2006 à 10:59:43    

je viens de rajouter exit; après tous les header() mais maintenant, j'ai un autre problème : lorsque la variable est vide elle redirige vers home.php qui inclu link.php qui redirige vers home.php etc... à l'infini !
 
Il faudrait que mon switch soit dans la condition if et pas dans else. Mais je sais pas comment faire !
 
Il faudrait que ma condition soit l'inverse de :
 

Code :
  1. if (empty($variable)) {
  2. ...
  3. }

Reply

Marsh Posté le 04-07-2006 à 11:08:38    

Code :
  1. if (!empty($variable)) {


---------------
my flick r - Just Tab it !
Reply

Marsh Posté le 04-07-2006 à 11:14:47    

traskarin a écrit :

je viens de rajouter exit; après tous les header() mais maintenant, j'ai un autre problème : lorsque la variable est vide elle redirige vers home.php qui inclu link.php qui redirige vers home.php etc... à l'infini !
 
Il faudrait que mon switch soit dans la condition if et pas dans else. Mais je sais pas comment faire !
 
Il faudrait que ma condition soit l'inverse de :
 

Code :
  1. if (empty($variable)) {
  2. ...
  3. }



 

Code :
  1. if (!empty($variable)) {
  2. ...
  3. }


 

Reply

Marsh Posté le 04-07-2006 à 11:22:29    

Ok, je crois que la condition marche ! Merci.
 
Mais j'ai encore un problème !  :fou:  
 
Lorsque je clique sur "Forum", je suis toujours sur la page home.php mais pas sur l'adresse du forum ! J'ai aucune erreur concernant le header() donc cela viendrait peut-être du code (une erreur de frappe, mauvais codage ?)

Reply

Marsh Posté le 04-07-2006 à 11:23:35    

autre question, le code suivant:

Code :
  1. $rubrique_num = '?rubrique='.$_POST;
  2. switch($_POST['rubrique']) {
  3.             case'1':
  4.                 header("Location: home.php$rubrique_num" );


T'es bien d'accord qu'il redirige sur home.php?rubrique=  ???
Vu que tu passes "rubrique" en GET dans tes liens et que tu le récupères en POST?

Message cité 1 fois
Message édité par anapajari le 04-07-2006 à 11:24:09
Reply

Marsh Posté le 04-07-2006 à 11:25:08    

... Dans le script du début C pas plutôt ça que tu veux ?
 
 

Code :
  1. if (empty($_POST['rubrique'])) {
  2.         header("Location: home.php" );
  3.     }


---------------
"L'informatique n'est pas plus la science des ordinateurs que l'astronomie n'est celle des télescopes." Michael R. Fellows & Ian Parberry
Reply

Marsh Posté le 04-07-2006 à 11:31:28    

anapajari a écrit :

autre question, le code suivant:

Code :
  1. $rubrique_num = '?rubrique='.$_POST;
  2. switch($_POST['rubrique']) {
  3.             case'1':
  4.                 header("Location: home.php$rubrique_num" );


T'es bien d'accord qu'il redirige sur home.php?rubrique=  ???
Vu que tu passes "rubrique" en GET dans tes liens et que tu le récupères en POST?


 
Exact !  :jap:  
 
Lorsque je récupère en GET ça marche ! Le code était donc :
 

Code :
  1. $rubrique_num = '?rubrique='.$_GET;
  2. switch($_GET['rubrique']) {
  3.             case'1':
  4.                 header("Location: home.php$rubrique_num" );


 
Merci !  :D  
 

Ricco a écrit :

... Dans le script du début C pas plutôt ça que tu veux ?
 
 

Code :
  1. if (empty($_POST['rubrique'])) {
  2.         header("Location: home.php" );
  3.     }



 
Je ne pense pas. A moins que cela change quelque chose, pour moi c'est équivalent ! Non ?

Reply

Marsh Posté le 04-07-2006 à 11:40:58    

traskarin a écrit :


Je ne pense pas. A moins que cela change quelque chose, pour moi c'est équivalent ! Non ?


 
Oui j'y ai pensé après ... Mais ça veut dire que t'as le register_global à ON dans le php.ini et ça fait un peu 4 ans que c'est fortement déconseillé.


---------------
"L'informatique n'est pas plus la science des ordinateurs que l'astronomie n'est celle des télescopes." Michael R. Fellows & Ian Parberry
Reply

Marsh Posté le 04-07-2006 à 11:40:58   

Reply

Marsh Posté le 04-07-2006 à 11:44:24    

Ricco a écrit :

Oui j'y ai pensé après ... Mais ça veut dire que t'as le register_global à ON dans le php.ini et ça fait un peu 4 ans que c'est fortement déconseillé.


 
Sur mon réseau local (EasyPHP 1.8) je pourrais le modifier, mais mon hébergeur (qui est online.net) je ne pense pas que je sois en mesure de le modifier.
 
Mais je vais faire la modification, histoire d'être sur ! Je te dirais si j'ai des problèmes !

Reply

Marsh Posté le 04-07-2006 à 12:09:10    

J'ai un autre problème !
 
Lorsque je clique sur les autres liens, le navigateur affiche :

Citation :

home.php?rubrique=Array


 :ouch:  
 
 
 
Quand je change :

Code :
  1. $rubrique_num = '?rubrique='.$_GET;


en :

Code :
  1. $rubrique_num = '?rubrique='.$_GET['rubrique'];


Le temps de chargement s'allonge et n'affiche rien ! J'ai essayer d'autre truc mais rien !

Reply

Marsh Posté le 04-07-2006 à 12:29:49    

Bein là c'est normal ... Le header( location ... ) ça lui fait recharger la page . S'il arrive dans home.php?rubrique=4 alors tu ajoute 1 dans une variable local ( variable aussitôt perdue ... ) et tu le fait repartir dans home.php?rubrique=4. C'est normal que ça boucle sans fin.


---------------
"L'informatique n'est pas plus la science des ordinateurs que l'astronomie n'est celle des télescopes." Michael R. Fellows & Ian Parberry
Reply

Marsh Posté le 04-07-2006 à 12:39:08    

Ricco a écrit :

Bein là c'est normal ... Le header( location ... ) ça lui fait recharger la page . S'il arrive dans home.php?rubrique=4 alors tu ajoute 1 dans une variable local ( variable aussitôt perdue ... ) et tu le fait repartir dans home.php?rubrique=4. C'est normal que ça boucle sans fin.


 
J'ai enlever tous les header() qui renvoie sur home.php et maintenant ça fonctionne ! (une erreur de débutant)
 
Merci !

Reply

Sujets relatifs:

Leave a Replay

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