Comment rediriger utilisateur si rechargement page

Lavozano Messages postés 14 Statut Membre -  
Flachy Joe Messages postés 2303 Statut Membre -
Bonjour à tous,

Malgré mes multiples recherches, je ne trouve pas la possibilité de faire ce qui suit :

- rediriger un utilisateur s'il recharge la page .

Par exemple, ici nous sommes sur : https://forums.commentcamarche.net/forum/
Je souhaiterais donc être rediriger vers : http://www.example.com si je clique sur le bouton qui sert à recharger la page sur laquelle je me trouve actuellement.

Est-ce possible ?

Si oui, comment faire ?

Merci beaucoup,

4 réponses

  1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 831
     
    Bonjour,

    Oui c'est possible
    Par exemple .. initialiser une variable de Session lors de l'affichage de la page
    Si la variable existe déjà ... faire la redirection

    en gros
    <?php
    session_start();
    
    if(!empty($_SESSION['toto'])){
      header('location: http://www.example.com');
      exit();
    }else{
     $_SESSION['toto'] = "peuImporte";
    }
    
    

    0
    1. Lavozano Messages postés 14 Statut Membre
       
      Merci Jordane,

      Je viens de tester ce code et il fonctionne. Cependant, comme je n'ai pas été assez précis dans ma question alors il ne fonctionne pas dans mon cas actuel. Car je souhaiterais que la redirection ne soit pas systématique. Je m'explique :
      L'utilisateur est redirigé vers une autre page s'il recharge la page actuel sans que cela l'empêche d'y revenir par la suite en ouvrant un nouvel onglet ou une nouvelle fenêtre.
      Est-ce possible ?
      0
    2. Flachy Joe Messages postés 2303 Statut Membre 261
       
      Il suffit de supprimer la variable de session avant de faire la redirection.
      session_start();
      
      if(isset($_SESSION['toto'])){
        unset($_SESSION['toto']);
        header('location: http://www.example.com');
        exit();
      }else{
       $_SESSION['toto'] = "peuImporte";
      }
      0
      1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > Flachy Joe Messages postés 2303 Statut Membre
         
        Ainsi, cela fera la redirection une fois sur deux. Il est possible aussi de faire la redirection pendant un temps déterminé, puis d’arrêter.
        0
      2. Flachy Joe Messages postés 2303 Statut Membre 261 > yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention  
         
        Effectivement, il faut aussi supprimer la variable de session quand on quitte la page mais pas quand on la recharge... Donc pas possible en PHP.

        C'est plus facile en AJAX mais il y a une méthode coté serveur :
        - la page A.php génère un code unique ###, l'enregistre dans une variable de session et redirige immédiatement sur la page A###.php
        - A###.php est redirigé via une réécriture d'URL sur A.php avec le code en argument
        - S'il y a un code argument et qu'il correspond à celui enregistré dans la variable de session alors la page A supprime le code de la variable de session et affiche le contenu sinon elle redirige vers l'autre page.

        En résumé : les liens dirigent vers A.php, le navigateur est renvoyé vers A###.php qui n'existe qu'une fois, son rafraîchissement provoque la redirection. Par contre si on redemande A.php, on obtiens bien une nouvelle page A###.php avec le même contenu
        0
  2. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 831
     
    humm...
    Pas en PHP .
    A la limite avec du Javascript ....
    En JS tu pourrais tester si l'utilisateur appuie sur la touche F5 en étant dans la page

    Un truc du style :
    
    window.addEventListener('keydown', kdown, false);
    
    function kdown(e)
      if ((e.which || e.keyCode) == 116) {
        window.location = "http://www.example.com";
      }
    }
    
    
    
    0
  3. Pitet Messages postés 2845 Statut Membre 530
     
    Salut,

    En reprenant la solution de jordane45 et en remplaçant la redirection via php par une ouverture d'un nouvel onglet en javascript, cela pourrait répondre à ton besoin ?
    <?php
    session_start();
    
    if(!empty($_SESSION['toto'])){
      echo "<script>window.open('http://www.example.com');</script>";
      exit();
    }else{
     $_SESSION['toto'] = "peuImporte";
    }
    


    Bonne journée,
    0
  4. Lavozano Messages postés 14 Statut Membre
     
    Bonjour,

    Merci Jordane, ton conseil me semble pertinent, je vais donc orienter mes recherches vers une possibilité liée au javascript, et je reviendrai pour vous faire part de mes avancées.

    Merci à Pitet pour le conseil bien que je voudrais que l'utilisateur reste sur le même onglet. De façon simple, le but est qu'il soit redirigé vers une autre url lorsqu'il clique sur le bouton de rechargement (ou en tapant F5) tout en restant sur le même onglet, c'est-à-dire sans provoquer l'ouverture d'un autre.

    Bonne soirée,
    0