Comment rediriger utilisateur si rechargement page

Fermé
Signaler
Messages postés
11
Date d'inscription
dimanche 25 décembre 2016
Statut
Membre
Dernière intervention
29 décembre 2016
-
Messages postés
2094
Date d'inscription
jeudi 16 septembre 2004
Statut
Membre
Dernière intervention
3 janvier 2022
-
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

Messages postés
34662
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 janvier 2022
3 987
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
Messages postés
11
Date d'inscription
dimanche 25 décembre 2016
Statut
Membre
Dernière intervention
29 décembre 2016

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
Messages postés
2094
Date d'inscription
jeudi 16 septembre 2004
Statut
Membre
Dernière intervention
3 janvier 2022
253
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
Messages postés
18261
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
16 janvier 2022
997 >
Messages postés
2094
Date d'inscription
jeudi 16 septembre 2004
Statut
Membre
Dernière intervention
3 janvier 2022

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
Messages postés
2094
Date d'inscription
jeudi 16 septembre 2004
Statut
Membre
Dernière intervention
3 janvier 2022
253 >
Messages postés
18261
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
16 janvier 2022

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
Messages postés
34662
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 janvier 2022
3 987
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
Messages postés
2650
Date d'inscription
lundi 11 février 2013
Statut
Membre
Dernière intervention
13 janvier 2022
485
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
Messages postés
11
Date d'inscription
dimanche 25 décembre 2016
Statut
Membre
Dernière intervention
29 décembre 2016

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