Php -> remplacer "header('location:.....

salut tout le monde,

Voila, j'ais mon site perso qui marche parfaitement en local, mais une fois sur internet j'ais un petit probleme: la commande

<?
header('loaction:index.php');
?>

ne veut pas marcher. Je ne vois pas pourquoi ca ne marche pas, car j'ais essayé dans <head></head>, <body></body> mais rien a faire.

Y a-t-il une autre commande que je peux utiliser?

Merci d'avance

A+

Elle a fait la belle
Puis s'est fait la belle

24 réponses

Résumé de la discussion

L'envoi d'une redirection HTTP en PHP avec header Location peut échouer sur le serveur distant à cause d'une configuration qui empêche l'en-tête d'être envoyé par le serveur web. Des éléments essentiels de solution incluent d'utiliser correctement la syntaxe header("Location: index.php"); et de ne placer aucun contenu ni espace avant l'en-tête, y compris dans les balises head ou body. D'autres interventions expliquent que le serveur peut nécessiter une configuration adaptée et que le recours à JavaScript est possible mais moins recommandé, l'option privilégiée restant l'envoi de l'en-tête côté serveur. En cas d'échec persistant, certains soulignent qu'une vérification de l'état du serveur et des tests avec une URL relative ou absolue peut aider à déterminer si la redirection est bloquée.

Bobot (l’IA à votre service)
  1. Bonjour tout le monde,

    Désolé pour cette réponse un peu tardive, mais j'avais oublié ce compte.
    La réponse a été que le serveur sur lequel j'étais ne gérait pas les header("location: index.php") à cause d'une mauvaise configuration du serveur. Après plusieurs mails avec le support, ils me l'on enfin avoué.

    Voila, un mystère de résolu !
    Merci quand même pour toutes vos réponses.
    Bonne continuation.
    1. tu peux passer par du javascript -->

      <?php
      print("<script type=\"text/javascript\">setTimeout('location=(\"page.php\")' ,1000);</script>");
      ?>
      
      1. sa marche très bien !
      2. ça marche mais c un peu lourd
      3. Merci pour l'astuce, ça marche
      4. ça march ;) mercii
      5. très bien vu, ça marche impec
    2. La solution a ton problème est très simple:
      il ne doit rien y avoir d'autre que <?php Header("Location: index.php"); ?> sur ta page, même pas un espace avant, si tu as mis des balise <head> avant, ou quoi que ce soit d'autre, ton si va considéré que l'entête est déjà envoyée et ne pas appliquer la fonction. Sur une page qui contient cette fonction il ne faut rien mettre d'autre avant
      1. ou encore plus simple, retire le <?php et le ?> normalement sa marche, car tu peut metre autre chose que header() sur ta page, sinon, a coi sert-elle a part prendre de la place pour rien... revoit tes cours, car la.... pfff
      2. oui c est vrais
      3. peut etre doit-il revoir ses cours, mais toi revoit tes base sur l'utilisation d'un forum avec ton deterrage de deux ans :s
      4. lool ... zetes trop des merdes
    3. je sais que ça fait longtemps mais quand je lis des bêtises pareilles, je ne peux pas m'empêcher de rectifier. La fonction header est gérée côté serveur! Ton navigateur n'a rien à voir avec la choucroute...
      1. Personne n'a vu que le post original datait du 14 juin 2004.

        Si la personne n'a pas trouvé elle a surement dû abandonner.
        1. Par hasard, c'est quoi ton serveur?
          parce que j'ai le même problème
          y a t il une solution en php, ou faut il absolument passer par du javascript ?
          1. 0.0 Y'a tu vraiment des programmeurs ici? les headers peuvent juste être inscrits avant <html>.
            Donc le code devrait être
            <?php header("location:http....") ?>
            <html>
            ....
            1. mieux je pense... que simplement header tout seul...

              die(header("Location:./index.html"));
              1. Non, c'est pas dans <head> qu'il faut la placer.
                Tout ce qui concerne les heder doit etre envoyé au serveur AVANT le moindre caractere. (balise html comprise).

                Ce doit etre la premiere chose à mettre sur ta page.

                Kalamit,
                11 jours avant le soleil, la mer et les mouettes. :)
                1. Rien a faire, ca ne marche pas non plus :(

                  Elle a fait la belle
                  Puis s'est fait la belle
                2. Dis, quel est le message d'erreur ?

                  Kalamit,
                  11 jours avant le soleil, la mer et les mouettes. :)
                3. @kalamitJustement, C ca qui m'embete aussi, c'est qu'il n'y a aucun message d'error. Il ne redirige pas le client, il le lesse en plan, tt seul, sans rien dire.

                  Elle a fait la belle
                  Puis s'est fait la belle
                4. Ah oui pardon ! Autant pour moi ! :)

                  .::: "A trop vouloir feindre de faire fi, on finit 
                  par faire fi de vouloir feindre." 
                  :::.
                5. @kalamitOK. Essaye:
                  header('location: ./index.php') Ca devrait fonctionner.

                  Kalamit,
                  11 jours avant le soleil, la mer et les mouettes. :)
              2. <?
                header('loaction:index.php');
                ?>

                loaction -> location
                1. j'avoue, j'ais fait une faute en tappant mon message, mais sur ma page, G tout vérifié!

                  Elle a fait la belle
                  Puis s'est fait la belle
              3. Tu peux toujours essayer :
                <meta HTTP-EQUIV="Refresh" CONTENT="1; index.php" />
                à mettre dans le <head></head>
                1. Et c'est bien dans HEAD qu'il faut la placer ! :)

                  .::: "A trop vouloir feindre de faire fi, on finit 
                  par faire fi de vouloir feindre." 
                  :::.
                  1. ca ne change rien

                    Elle a fait la belle
                    Puis s'est fait la belle
                    1. Ce que tu décris se produit si le header n'est pas la première chose envoyée par le navigateur.
                      Si tu as déjà un affichage quelconque ("echo" ou balise html) le header location ne s'effectue pas.
                      1. Salut,

                        Vous êtes bourin en javascript^^ :

                        top.location='index.php'; // si vous n'aimez pas les frames

                        document.location='index.php'; // simplement
                        • 1
                        • 2