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. mieux je pense... que simplement header tout seul...

      die(header("Location:./index.html"));
      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. 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. Salut,

            Vous êtes bourin en javascript^^ :

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

            document.location='index.php'; // simplement
            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. 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. 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. bonjour
                  la fonction header ca marche juste en local.
                  esseyer avec cette fonction javascript c"est plus fiable.
                  <script language="javascript">
                  document.location.replace("index.php");
                  </script>
                  1. Bonjour

                    la fonction header ca marche juste en local faux.
                  2. Stop avec les solutions javascript ce n'est pas la reponse à tout vos pb
                2. 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. Tu peux toujours essayer :
                    <meta HTTP-EQUIV="Refresh" CONTENT="1; index.php" />
                    à mettre dans le <head></head>
                    1. 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
                    2. C'est simple... a quoi ca te sers de rediriger sur l'index ? il faut rediriger directement sur le nom de la page sur le web (www.blabla.com/index.php)
                      1. ca ne change rien

                        Elle a fait la belle
                        Puis s'est fait la belle
                        • 1
                        • 2