Redirection après une connexion

Eléphant du PHP | 216 Messages

10 sept. 2010, 15:00

Bonjour,

j'aimerais rediriger automatiquement l'internaute aprsè sa connexion sur la page qu'il voulait initialement, quelles sont les méthodes que vous utilisez ?

Exemple : L'internaute non connecté veut accéder à la page :

pagea.php

je le dirige vers la page

connexion.php

et ensuite, j'aimerais le rediriger automatiquement vers la page :

pagea.php

Merci d'avance pour vos différentes solutions .

ps : il me semble que HTTP_REFERER n'est fiable sur tous les navigateurs...

ViPHP
AB
ViPHP | 5818 Messages

10 sept. 2010, 16:35

Le sésame c'est : header("Location: page_destination.php'); doc ici

Donc dans la pagea.php, si le visiteur n'a pas de session d'authentification tu le dirige vers la page d'authentification :
if(!isset($_SESSION['login'])) 
{
header("Location: page_connexion.php');
exit;
}
Et dans la page de connexion, suite à l'authentification, tu le dirige vers pagea.php
if(tests_authentification == ok) 
{
$_SESSION['login'] = $login;
header("Location: pagea.php');
exit;
}
Bien entendu puisque dans cet exemple on utilise les sessions (mais c'est indépendant de l'utilisation de header...) il faut que tes pages commencent par session_start();

Si tu veux mémoriser la page initiale tu peux utiliser $_SERVER['REQUEST_URI'] et la transmettre par exemple dans une variable de session. Donc dans pagea.php :
if(!isset($_SESSION['login'])) 
{
$_SESSION['page_origine'] = $_SERVER['REQUEST_URI'];
header("Location: page_connexion.php');
exit;
}

Eléphant du PHP | 216 Messages

10 sept. 2010, 16:46

Oui d'accord,

mais comment savoir s'il est venu de la pagea.

Comment retrouver la page d'origine ?

Dans mon exemple, c'est la pagea, mais ça peut être la pageb, c, d etc...

ViPHP
AB
ViPHP | 5818 Messages

10 sept. 2010, 16:52

En fait tu n'as peut-être pas vu la fin de mon précédent message car je l'ai éditer pour le terminer :)

Eléphant du PHP | 216 Messages

12 sept. 2010, 21:15

Bonsoir AB et désolé pour le retard.

Merci pour ton exemple c'est exactement ce que je voulais.

A +