Comment rediriger utilisateur si rechargement page

Lavozano Messages postés 11 Date d'inscription   Statut Membre Dernière intervention   -  
Flachy Joe Messages postés 2102 Date d'inscription   Statut Membre Dernière intervention   -
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

jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 753
 
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
Lavozano Messages postés 11 Date d'inscription   Statut Membre Dernière intervention  
 
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
Flachy Joe Messages postés 2102 Date d'inscription   Statut Membre Dernière intervention   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
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584 > Flachy Joe Messages postés 2102 Date d'inscription   Statut Membre Dernière intervention  
 
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
Flachy Joe Messages postés 2102 Date d'inscription   Statut Membre Dernière intervention   261 > yg_be Messages postés 23541 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
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 753
 
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
Pitet Messages postés 2826 Date d'inscription   Statut Membre Dernière intervention   527
 
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
Lavozano Messages postés 11 Date d'inscription   Statut Membre Dernière intervention  
 
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