Comment rediriger utilisateur si rechargement page

Fermé
Lavozano Messages postés 11 Date d'inscription dimanche 25 décembre 2016 Statut Membre Dernière intervention 29 décembre 2016 - Modifié par Lavozano le 29/12/2016 à 15:44
Flachy Joe Messages postés 2101 Date d'inscription jeudi 16 septembre 2004 Statut Membre Dernière intervention 7 novembre 2022 - 29 déc. 2016 à 23:15
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 36944 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 7 février 2023 4 491
29 déc. 2016 à 15:53
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 dimanche 25 décembre 2016 Statut Membre Dernière intervention 29 décembre 2016
29 déc. 2016 à 16:25
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 2101 Date d'inscription jeudi 16 septembre 2004 Statut Membre Dernière intervention 7 novembre 2022 258
Modifié par Flachy Joe le 29/12/2016 à 22:34
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 21121 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 7 février 2023 1 308 > Flachy Joe Messages postés 2101 Date d'inscription jeudi 16 septembre 2004 Statut Membre Dernière intervention 7 novembre 2022
29 déc. 2016 à 22:34
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 2101 Date d'inscription jeudi 16 septembre 2004 Statut Membre Dernière intervention 7 novembre 2022 258 > yg_be Messages postés 21121 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 7 février 2023
Modifié par Flachy Joe le 29/12/2016 à 23:20
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 36944 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 7 février 2023 4 491
Modifié par jordane45 le 29/12/2016 à 17:12
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 lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 545
29 déc. 2016 à 17:10
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 dimanche 25 décembre 2016 Statut Membre Dernière intervention 29 décembre 2016
29 déc. 2016 à 18:37
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