[PHP] Probleme sur la fonction header()

Probleme sur la fonction header() [PHP] - PHP - Programmation

Marsh Posté le 09-11-2003 à 18:56:23    

:hello:  
 
 
Voila, j'ai soudainement un pb lorsque j'ai fait ça :
 

Code :
  1. <?php
  2. if(isset($_GET['design']) == '' or empty($_GET['design']))
  3. {
  4. header('Location: ?design=3&rub='.$_GET['rub'].'');
  5. }
  6. if(isset($_GET['rub']) == '' or empty($_GET['rub']))
  7. {
  8. header('Location: ?design='.$_GET['design'].'&rub=0');
  9. }
  10. if(isset($_GET['order']) == '' or empty($_GET['order']))
  11. {
  12. header('Location: ?design='.$_GET['design'].'&rub='.$_GET['rub'].'&order=alpha');
  13. }
  14. ?>


 
 
Si quelqu'un peut me confirmer le fait que ça ne peut pas fonctionner, et pk ça serait cool ;)


Message édité par KdZ' le 09-11-2003 à 20:12:34
Reply

Marsh Posté le 09-11-2003 à 18:56:23   

Reply

Marsh Posté le 09-11-2003 à 18:58:02    

Et c'est quoi ton problème soudain ? :o


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
Reply

Marsh Posté le 09-11-2003 à 18:59:28    

Taiche a écrit :

Et c'est quoi ton problème soudain ? :o


 
 
La page ne se charge pas...
C'est cencé fonctionner ça ou pas ?

Reply

Marsh Posté le 09-11-2003 à 19:05:11    

T'es sûr de ne faire appel à header() qu'en tout début de code ? Tu fais pas d'include ou d'echo ou quoi que ce soit avant ? Y a pas de balise HTML qui traîne avant ?


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
Reply

Marsh Posté le 09-11-2003 à 19:06:24    

Nonnon je fais bien mon header en debut de code, merci :)

Reply

Marsh Posté le 09-11-2003 à 19:12:19    

bon le pb vient bien de cette partie du code : (que j'ai un peu modifié d'ailleur)
 

Code :
  1. <?php
  2. if(isset($_GET['design']) == '' or empty($_GET['design']))
  3. {
  4. header('Location: ?design=3&rub='.$_GET['rub'].'&order='.$_GET['order'].'');
  5. }
  6. if(isset($_GET['rub']) == '' or empty($_GET['rub']))
  7. {
  8. header('Location: ?design='.$_GET['design'].'&rub=0&order='.$_GET['order'].'');
  9. }
  10. if(isset($_GET['order']) == '' or empty($_GET['order']))
  11. {
  12. header('Location: ?design='.$_GET['design'].'&rub='.$_GET['rub'].'&order=alpha');
  13. }
  14. ?>


 
bon faut voir d'où vient l'erreur maintenant...


Message édité par KdZ' le 09-11-2003 à 19:15:33
Reply

Marsh Posté le 09-11-2003 à 19:17:53    

Bon, si ça peut aider, sous mozilla j'ai ça :  
 
http://pim.asso.fr/stkge/upload/fichiers/56416541651.PNG

Reply

Marsh Posté le 09-11-2003 à 19:25:56    

boucle infini avec tes header...

Reply

Marsh Posté le 09-11-2003 à 19:35:18    

C bon, j'avance (tout seul d'ailleur), ça me fait ça des qu'une variable 'design', 'rub' ou 'order' est à 0 ou qu'elle n'existe pas.
 
Par contre, celle là fonctionne :  
 
if(isset($_GET['order']) == '' or empty($_GET['order']))
{
header('Location: ?design='.$_GET['design'].'&rub='.$_GET['rub'].'&order=alpha');
}

Reply

Marsh Posté le 09-11-2003 à 19:36:14    

RiderCrazy a écrit :

boucle infini avec tes header...


 
 
A bon ? [:miracle]  
 
Tu peux m'expliquer ?

Reply

Marsh Posté le 09-11-2003 à 19:36:14   

Reply

Marsh Posté le 10-11-2003 à 00:21:37    

:up:

Reply

Marsh Posté le 10-11-2003 à 10:56:08    

Plusieurs problèmes :
1- or en PHP s'écrit || (Pour and c'est && )
2- isset(...) == '' Est une condition écrite n'importe comment. isset() retourne un booléen.
 
Exemple re-écrit d'une manière peut-être un peu plus clair :
 

<?php
 
$redirect = false;
 
if( ! isset( $_GET['design'] ) || empty( $_GET['design'] ) )
{
 $design = 3;
}
else
{
 $design = $_GET['design'];
}
 
if( ! isset( $_GET['rub'] ) || empty( $_GET['rub'] ) )
{
 $rub = 0;
}
else
{
 $rub = $_GET['rub'];
}
 
if( ! isset( $_GET['order'] ) || empty( $_GET['order'] ) )
{
 $order = 'alpha';
}
else
{
 $order = $_GET['order'];
}
 
if( $redirect )
{
 header( "Location: ?design=$design&rub=$rub&order=$order" );
 exit;
}
 
// Pour debug :
echo( "design=$design, rub=$rub, order=$order );
?>



---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 10-11-2003 à 10:58:54    

Oups, je viens de voir que 'or' et 'and' sont des opérateurs valides. Désolé, j'avais jamais vu çà en PHP.


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 10-11-2003 à 17:15:09    

Arf, merci mais il faut absolument que je fasse un header() parce que les autres variables sont lues à partir de l'url...

Reply

Marsh Posté le 10-11-2003 à 20:00:08    

Ben le header, je l'ai mis, mais y'en a qu'un :D


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 10-11-2003 à 20:03:03    

Heu j'ai un doute là tout d'un coup, tu fais ton header() juste pour récupérer les autres variables ?
 
Si c'est çà, ben tu les as, t'as juste à définir des valeurs par défaut...
 
En gros, tu fais comme j'ai fait pour design, rub et order...


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 10-11-2003 à 20:09:58    

KdZ' a écrit :

Arf, merci mais il faut absolument que je fasse un header() parce que les autres variables sont lues à partir de l'url...

Je vois pas le rapport entre l'header et les variables passants par l'URL ...
 
Je viens d'ailleur de penser a un truc : quand des variables sité au début n'est pas initialisé tu lui dit de charger une autre page. C'est normal que la première soit pas chargé. ;)
T'es sur que c'est dans la page d'index du répertoire que tu fais ça? Sans ça, c'est normal que t'es un problème.
 
A mon avis, ca serait beaucoup plus simple que tu changes simplement les valeurs de $_GET['rub'] et autres plustôt que de charger une nouvelle fois la page avec de nouveaux parmètres. ;) En plus, il me semble que empty(0) = TRUE du coup, tu pars en boucle infinis pour $_GET['rub']. ;)

Reply

Marsh Posté le 10-11-2003 à 20:18:49    

Il ne redirige pas sur une autre page, mais sur la même !
Donc en fait le header() ne sert à rien.
En fait ce qu'il faut, c'est juste initialiser des valeurs par défaut :
 

<?php  
 
if( ! isset( $_GET['design'] ) || empty( $_GET['design'] ) )  
{  
 $_GET['design']= 3;  
}  
 
if( ! isset( $_GET['rub'] ) || empty( $_GET['rub'] ) )  
{  
 $_GET['rub'] = 0;  
}  
 
if( ! isset( $_GET['order'] ) || empty( $_GET['order'] ) )  
{  
 $_GET['order'] = 'alpha';  
}  
 
...
 
?>


 
Si mOssieur avait bien voulu nous dire ce qu'il vaoulait faire :D
 
Sauf erreur de ma part bien sùr, mais là je pense que j'ai bon  :sol:


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 10-11-2003 à 20:40:30    

Mara's dad a écrit :

Il ne redirige pas sur une autre page, mais sur la même !

header('Location: ?'); voudrait donc dire qu'on recharge la même pas sans paramêtre? :o
Je pensais que ca signifiait qu'on demandait au navigateur de charger la page d'index du répertoire courant.

Reply

Marsh Posté le 10-11-2003 à 20:45:36    

omega2 a écrit :

header('Location: ?'); voudrait donc dire qu'on recharge la même pas sans paramêtre? :o
Je pensais que ca signifiait qu'on demandait au navigateur de charger la page d'index du répertoire courant.


Yes !
 
Et en plus t'as raison...
 
Quand il faisait son header, les autres variables étaient perdues...
 
Ou alors, j'ai absoluement rien compris à son truc :lol:


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 10-11-2003 à 20:59:42    

:whistle:  :lol:


Message édité par KdZ' le 10-11-2003 à 21:00:45
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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