Précédent   Forum des professionnels en informatique > PHP > Langage > Sessions
Sessions Forum d'entraide sur les sessions avec PHP. Avant de poster -> FAQ sessions, Cours sessions et Sources sécurité
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 24/05/2006, 11h19   #1
Nouveau Membre du Club
 
Inscription : mai 2006
Messages : 175
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 175
Points : 30
Points : 30
Par défaut Session comment rediriger vers une page protégée après identification

Bonjour à tous,
Je débute en php et en programmation et j'ai besoin de votre aide... si ca ne vous embete pas evidemment. Bon voila mon probleme:

Certaines pages de mon site nécessitent d'être loggé pour y accéder. Je pense avoir réussi à créer une page de login (voir code ci-dessous) seulement une fois identifié je n'arrive pas à rediriger l'utilisateur vers la page à laquelle il essayait d'accéder avant son identification. Si l'utilisateur veut accéder à la page mon_compte.php par exemple et qu'il n'est pas loggé je le renvoie sur la page login.php et ensuite je voudrais le rediriger directement sur mon_compte.php. Si c'est la page poster_message.php qui est protégée je veux pouvoir le rediriger vers celle ci apres identification. Donc en fait je veux pouvoir récuperer la page d'ou vient l'utilisateur pour ensuite le rediriger vers cette page. J'espere que je suis asser clair.

Voici le code de ma page login.php et le code que j'ai ajoute sur mon_compte.php.

Login.php
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
 
<? include("_connexion.php"); 
if(isset($_POST) && !empty($_POST['username']) && !empty($_POST['password'])) {
  extract($_POST);
  $sql = "select password from members where username='".$username."'";
  $req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
  $data = mysql_fetch_assoc($req);
  $url=$_SERVER['REQUEST_URI'];
  if($data['password'] != $password)
  {
    header("Location: login.php");
	echo "<h5>Mauvais pseudo ou mot de passe. Merci de recommencer</h5>";
	exit;
  }
  else {
    session_start();
    $_SESSION['username'] = $username;  
    header("Location: $url");
}   
}
mysql_close(); ?>
 
 <head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<link rel="stylesheet" type="text/css" href="mystyle.css" />
<title>Login : ouvir une session</title>
</head>
 
<body>
<table align="left" cellpadding="0" cellspacing="0" border="0" width="900">
<tr>
<td colspan="2">
<a href="default.php"><img src="img/logo.gif" align="absmiddle" border="0"></a>
</td>
</tr>
 
<tr>
<td colspan="2">
<h1>Ouvrir une session</h1>
</td>
</tr>
 
<tr>
<td colspan="2">
<h3>Entrez votre pseudo et votre mot de passe</h3>
</td>
</tr>
 
<tr>
<td width="50%" valign="top">
 
<table align="center" cellpadding="0" cellspacing="10" border="0" width="100%" >
<tr>
<td id="yellowtd">
<h2>Vous êtes déjà membre ?</h2>
<p>Entrez votre pseudo et votre mot de passe pour ouvrir une session. </p>
<form action="login.php" method='post'"> 
<table align="center" border="0">
  <tr>
    <td><p>Pseudo</p></td>
    <td><input type="text" name="username" maxlength="20"></td>
  </tr>
  <tr>
    <td><p>Mot de passe</p></td>
    <td><input type="password" name="password" maxlength="20"></td>
  </tr>
  <tr>
    <td colspan="2" align="center"><input type="submit" value="Ouvrir une session"><br />
	<a href="pseudo_oublie.php">Mot de passe ou pseudo oublié ?</a></td>
  </tr>
</table>
</form>
mon_compte.php
Code :
1
2
3
4
5
6
7
8
9
 
<?
session_start();
if(!isset($_SESSION['username']))
{
	header("Location: login.php");
	exit;
}
?>

Merci d'avance

dolf13
dolf13 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/05/2006, 11h45   #2
Membre chevronné
 
Avatar de stunti
 
Inscription : mai 2006
Messages : 521
Détails du profil
Informations personnelles :
Âge : 33

Informations forums :
Inscription : mai 2006
Messages : 521
Points : 602
Points : 602
Tu peux utiliser le referer.
Quand tu arrives sur ta page de login, tu sais d'ou tu proviens grace au refrer.
Tu le mets en session.
Une fois la personne enregistree, tu renvoi vers le referer que tu as stocke.
__________________
If it's not broken, don't fix it.
BiliBa Built on top of Zend Framework
stunti est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/05/2006, 15h02   #3
Nouveau Membre du Club
 
Inscription : mai 2006
Messages : 175
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 175
Points : 30
Points : 30
Citation:
Envoyé par stunti
Tu peux utiliser le referer.
Quand tu arrives sur ta page de login, tu sais d'ou tu proviens grace au refrer.
Tu le mets en session.
Une fois la personne enregistree, tu renvoi vers le referer que tu as stocke.
Merci. T'aurais un exemple de code ou une tutoriel à me donner?
dolf13 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/05/2006, 15h08   #4
Membre du Club
 
Inscription : mai 2006
Messages : 142
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 142
Points : 54
Points : 54
tu utilises la variable $_SERVER['HTTP_REFERER'] qui contient l'url de la page depuis laquelle l'utilisateur à accéder à la page en cours.

tu fais un truc du genre :
$pageprecedente=$_SERVER['HTTP_REFERER'];
header('Location:$pageprecedente');
yanice est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/05/2006, 15h21   #5
Nouveau Membre du Club
 
Inscription : mai 2006
Messages : 175
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 175
Points : 30
Points : 30
Ok Yanice je vais essayer merci.
dolf13 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/05/2006, 15h35   #6
Membre Expert
 
Avatar de Lorenzo77
 
Inscription : mai 2006
Messages : 1 294
Détails du profil
Informations personnelles :
Âge : 40
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : mai 2006
Messages : 1 294
Points : 1 220
Points : 1 220
attention :le referer est passé par le navigateur, il vient donc du client et ne peut en AUCUN CAS etre quelque chose de confiance ...

ex : avec FF, je peux définir le referer que je veux ou meme l'effacer, le bloquer ...

a toi de verifier qu'il ne risque pas d' avoir un trou de sécu en passant un referer correspondant a une page de ton site ayant un niveau d'autorisation supérieur.
Lorenzo77 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/05/2006, 15h37   #7
Membre éprouvé
 
Inscription : février 2005
Messages : 401
Détails du profil
Informations personnelles :
Âge : 27

Informations forums :
Inscription : février 2005
Messages : 401
Points : 450
Points : 450
+1 Lorenzo

Ne jamais faire confiance à ce qui passe entre les mains du client !
Sylvain71 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/05/2006, 15h40   #8
Nouveau Membre du Club
 
Inscription : mai 2006
Messages : 175
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 175
Points : 30
Points : 30
Ca se complique!!!! Je n'ai qu'un seul niveau d'autorisation (pages accessibles par TOUS ou pas accessibles uniquement par les membres).... que me conseille tu de faire dans ce cas?
Merci d'avance
dolf13 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/05/2006, 15h43   #9
Membre Expert
 
Avatar de Lorenzo77
 
Inscription : mai 2006
Messages : 1 294
Détails du profil
Informations personnelles :
Âge : 40
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : mai 2006
Messages : 1 294
Points : 1 220
Points : 1 220
si tu n'as qu'un niveau et une verif sur chaqu'une des pages alors tu ne risques rien a utiliser un "mauvais referer" !
Lorenzo77 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/05/2006, 16h09   #10
Nouveau Membre du Club
 
Inscription : mai 2006
Messages : 175
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 175
Points : 30
Points : 30
ok je vais essayer
dolf13 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/05/2006, 17h06   #11
Nouveau Membre du Club
 
Inscription : mai 2006
Messages : 175
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 175
Points : 30
Points : 30
Voila j'ai essaye mais j'ai du faire une erreur quelque part mais je vois pas ou. Ca commence serieusement a me gonfler

Voici le code de ma page login.php alors si ca vous dit de m'aider n'hesitez surtout pas. Merci d'avance

Quand je vais sur la page login et que je me connecte avec un utilisateur ca ne me redirige pas sur la page precedente, je reste sur la page login.php et l'utilisateur est bien connecte.

Bon voila le code

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
 
<? include("_connexion.php"); 
  if(isset($_SERVER['HTTP_REFERER']) && (($_POST) && !empty($_POST['username']) && !empty($_POST['password']))) {
  extract($_POST);
  $sql = "select password from members where username='".$username."'";
  $req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
  $data = mysql_fetch_assoc($req);
  $pageprecedente=$_SERVER['HTTP_REFERER'];
  if($data['password'] != $password)
  {
    header("Location: login.php");
	echo "<h5>Mauvais pseudo ou mot de passe. Merci de recommencer</h5>";
	exit;
  }
  else {
    session_start();
    $_SESSION['username'] = $username; 
	$_SESSION['pageprecedente'] = $_SERVER['HTTP_REFERER'];
    header("Location:$pageprecedente");
}   
}
mysql_close(); ?>
 
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<link rel="stylesheet" type="text/css" href="mystyle.css" />
<title>Login : ouvir une session</title>
</head>
 
<body>
<table align="left" cellpadding="0" cellspacing="0" border="0" width="900">
<tr>
<td colspan="2">
<a href="default.php"><img src="img/logo.gif" align="absmiddle" border="0"></a>
</td>
</tr>
 
<tr>
<td colspan="2">
<h1>Ouvrir une session</h1>
</td>
</tr>
 
<tr>
<td colspan="2">
<h3>Entrez votre pseudo et votre mot de passe</h3>
</td>
</tr>
 
<tr>
<td width="50%" valign="top">
 
<table align="center" cellpadding="0" cellspacing="10" border="0" width="100%" >
<tr>
<td id="yellowtd">
<h2>Vous êtes déjà membre ?</h2>
<p>Entrez votre pseudo et votre mot de passe pour ouvrir une session. </p>
<form action="login.php" method='post'"> 
<table align="center" border="0">
  <tr>
    <td><p>Pseudo</p></td>
    <td><input type="text" name="username" maxlength="20"></td>
  </tr>
  <tr>
    <td><p>Mot de passe</p></td>
    <td><input type="password" name="password" maxlength="20"></td>
  </tr>
  <tr>
    <td colspan="2" align="center"><input type="submit" value="Ouvrir une session"><br />
	<a href="pseudo_oublie.php">Mot de passe ou pseudo oublié ?</a></td>
  </tr>
</table>
</form>
dolf13 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/05/2006, 18h55   #12
Membre Expert
 
Avatar de Lorenzo77
 
Inscription : mai 2006
Messages : 1 294
Détails du profil
Informations personnelles :
Âge : 40
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : mai 2006
Messages : 1 294
Points : 1 220
Points : 1 220
fait un echo sur la valeur de $pageprecedente et tu verras tout de suite ou est le probleme.

autre chose, quand tu definis un header+location, il doit y avoir un espace apres les :
ex :
header("Location: $pageprecedente");
Lorenzo77 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/05/2006, 02h23   #13
Nouveau Membre du Club
 
Inscription : mai 2006
Messages : 175
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 175
Points : 30
Points : 30
j'ai ajoute un echo $pageprecedente et ca me donne l'url de la page login.php et pas de la page précedente. J'ai une erreur quelque part mais je vois pas ou. Merci bien pour ta precieuse aide.

dolf13
dolf13 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/05/2006, 04h13   #14
Membre Expert
 
Avatar de Lorenzo77
 
Inscription : mai 2006
Messages : 1 294
Détails du profil
Informations personnelles :
Âge : 40
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : mai 2006
Messages : 1 294
Points : 1 220
Points : 1 220
alors fait un echo du referer sur la page login ...

tu dois sauvegarder le referer au moment ou le client arrive sur la 1ere page de ton site, pas aprés l'avoir redirigé sur la page login
Lorenzo77 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 12h13.


 
 
 
 
Partenaires

Hébergement Web