Erreur php: Cette page Web présente une boucle de redirection.

Résolu
Bonjour,
Dans mon site j'ai un espace membre. L'utilisateur se connecte à partir de la page index.php puis arrive sur la page membre.php. Seulement, lorsque l'utilisateur est connecté, il a quand même accès à la page index.php comme s'il n'était pas connecté.
Donc j'ai essayé ce code: (pour que si l'utilisateur est connecté et qu'il veut accéder a index.php, qu'il soit redirigé directement sur membre.php / et vise versa s'il n'est pas connecté)
<?php
session_start();
 
if(isset($_SESSION['login']))
{
  header('location: membre.php');
}
else
{
  header('location: index.php');
}



Mais le navigateur chrome m'indique l'erreur Cette page Web présente une boucle de redirection :/.

Merci d'avance de votre aide !

9 réponses

  1. Bonjour,

    C'est normal. Vous avez index.php qui appelle index.php. Voici le code qui va bien, à placer en tête de index.php avant tout autre code:

    <?php
    session_start();
     
    if(isset($_SESSION['login']))
    {
      header('location: membre.php');
    }


    Et dans membre.php placer ceci:

    session_start();
     
    if(!isset($_SESSION['login']))
    {
      header('location: index.php');
    }


    A+
    1. Salut,

      tu as effectivement un problème si tu place ce code sur la page membre.php ou index.php

      car si tu es sur 1 des 2 pages et que tu entres dans le cas de figure, tu as effectivement une boucle infinie.

      Sur quelle page met tu ce code ?

      a+
      1. Bah je l'ai mis sur les 2 pour que sa fasse une redirection si le membre est connecté vers membre.php quand il était sur index.php. Puis si le membre n'est pas connecté une vers index.php quand il était sur membre.php...
        1. Peux tu me confirmer ces éléments :

          Si on va sur index.php et qu'on est identifié on doit etre redirigé où ?
          Si on va sur index.php et qu'on est pas identifié on doit etre redirigé où ?
          Si on va sur membre.php et qu'on est identifié on doit etre redirigé où ?
          Si on va sur membre.php et qu'on est pas identifié on doit etre redirigé où ?

          Dès que tu me donnes ces élements je te donne le scripts à mettre.

          a+
          1. Deja la page index.php contient le formulaire de connexion

            Si on est sur index.php en étant identifié, on est redirigé vers membre.php
            Si on est sur index.php sans être identifié, on reste sur index.php
            Si on est sur membre.php en étant connecté, on reste sur membre.php evidement
            Si on est sur membre.php sans être connecté, on est redirigé vers index.php
            Voila
            1. la page membre.php, c'est quand le membre est connecté ( c'est sa page d'acceuil en faite)
          2. Il te suffit alors de mettre :

            SUR index.php :
            if(isset($_SESSION['login']))
            {
              header('location: membre.php');
            }
            


            et de mettre sur membre.php :
            if(!isset($_SESSION['login']))
            {
              header('location: index.php');
            }


            et ça marchera sans problème ;)

            a+
            1. merci mais jcomprend pas sa marche pas :s
              quand je suis connecté et que j'accede a index.php sa me redirige pas vers membre :s
              voici le code de membre.php:
              <?php
              session_start();
              if(!isset($_SESSION['login']))
              {
              header('location: index.php');
              }
              ?>

              et celui de index.php:
              <?php
              if(isset($_SESSION['login']))
              {
              header('location: membre.php');
              }
              ?>
              1. Bonjour,

                Vérifié peut être le contenu de $_SESSION['login']
                avec un echo.
                1. Merci a mpmp93, sa marche ! :)
                  Merci aussi a trusttelecom de m'avoir éclairé et aussi à Angelneonizz !
                  Merci les gars (ou les filles ;) ) bye !