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 01/02/2011, 22h33   #1
Nouveau Membre du Club
 
Inscription : juillet 2010
Messages : 196
Détails du profil
Informations forums :
Inscription : juillet 2010
Messages : 196
Points : 25
Points : 25
Par défaut probleme session niveau utilisateur

Bonjour,
j'ai un site ou j'ai un niveau d'utilisateur avec un admin.
Sauf que je n'arrive pas à le mettre en place...

Voilà mon code

page index avec le formulaire pour se loguer

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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
 
 
 
 
<?php
session_start();
 
require"admin/config.php";
mysql_connect(DB_HOST,DB_LOGIN,DB_PASS);
mysql_select_db(DB_BDD);
 
if(isset($_POST) && !empty($_POST['login']) && !empty($_POST['pass']))
{
	extract($_POST);
	$pass=sha1($pass);
 
 
	$sql = " SELECT id FROM users WHERE login='$login' and pass='$pass'";
	$req = mysql_query($sql) or die(mysql_error());
 
		if(mysql_num_rows($req)>0)
		{	
			$data= mysql_fetch_assoc($req);
			$_SESSION['Auth'] = array(
			'login' => $login,
			'pass' => $pass);
 
 
				header('Location:admin/indexadmin.php');
 
		}
		else
		{	
			header('location:galerie.php');
		}
 
}
 
?>
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head>
<title>Paris Saint Germain</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
<link rel="stylesheet" type="text/css" href="feuillestyle.css" /> 
</head>
 
 
 
 
<body>
<div id="site">
 
<div id="header">
 
 
</div>
 
<div id="main">
<div id="side">
 
<ul>
<li class="name"><a href="index.php">NEWS</a></li>
<li>Toutes les news pour vous tenir au courant de l'actu de manière aisée !</li>
</ul>
 
<ul>
<li class="name"><a href="galerie.php">GALERIE</a></li>
<li>Accéder en un clic à la galerie de votre équipe favorite.</li>
</ul>
 
<ul>
<li class="name"><a href="palmares.php">PALMARES</a></li>
<li>Le PSG ne cesse d'accumuler des titres année après année.
Vous ne savez plus vous y retrouver tellement il y en a ? 
Cliquez ici !</li>
</ul>
 
<ul>
 
<li>
 
<form method="post" action="index.php">
 
 
Pseudo :<input type="text" name="login" >
Mot de passe :<input type="password" name="pass" >
<input type="submit" value="OK" >
 
</form>
 
 
 
 
</li>
</ul>
 
</div>
 
 
<div id="contenu">
 
<div id="presentation">
 
 
							    <?php
 
 
 
 
 
 
 
# // on prépare une requête permettant de calculer le nombre total d'éléments qu'il faudra afficher sur nos différentes pages
$sql = 'SELECT count(*) FROM news';  
 
$resultat = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error()); 
# // on récupère le nombre d'éléments à afficher
$nb_total = mysql_fetch_array($resultat); 
# // sinon, on regarde si la variable $debut (le x de notre LIMIT) n'a pas déjà été déclarée, et dans ce cas, on l'initialise à 0
if (!isset($_GET['debut']))
 $_GET['debut'] = 0; 
 
 $nb_affichage_par_page = 3; 
 
 
 
 
 
 
$dossier = 'images/';
 
# // Préparation de la requête avec le LIMIT 
$sql='SELECT * FROM news order by date desc LIMIT '.$_GET['debut'].','.$nb_affichage_par_page;
$req = mysql_query($sql) or die(mysql_error());
while($data=mysql_fetch_assoc($req))
{
    $id=$data["id"];
    $filename=$dossier.$data['image'];
 
    echo '<img src="'.$filename.'" alt="" />';
    echo "<p>{$data["titre"]} -- ";
   echo "<p>".Tronquer_Texte($data["contenu"],  100)."<br><a href='detail news.php?id={$data["id"]}'>Suite de  l'article</a></p>";
    echo "<p align=\"right\">".date("j/n/Y G:i",strtotime($data["date"]))."</p>";
    echo "<p><a href=\"formcom.php?id={$data["id"]}\">  Cliquez ici pour ajouter un commentaire </a></p>";
    $sql="SELECT id FROM comment WHERE news_id={$data["id"]}";
	$req2 = mysql_query($sql) or die(mysql_error());
	echo" Commentaire(s) (".mysql_num_rows($req2).")<br><br><br><br><br>";
 
 
 
}
?>
 
 
 
 
 
</div>
 
 
 
 
 
 
 
 
 
 
 
<div id="footer">
<p>Design By </p>
</div>
 
</body>
</html>

page avec la class auth

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
<?php
 
 
	Class Auth{
		static function isLogged()
		{
			if(isset($_SESSION['Auth']) && isset($_SESSION['Auth']['login']) && isset($_SESSION['Auth']['pass']) )
			{	
				extract($_SESSION['Auth']);
				require"config.php";
				mysql_connect(DB_HOST,DB_LOGIN,DB_PASS);
				mysql_select_db(DB_BDD);
				$sql = " SELECT id from users where login='$login' and pass='$pass'";
				$req = mysql_query($sql) or die(mysql_error());
 
				if(mysql_num_rows($req)>0)
				{
					return true;
				}
				else
				{
					return false;
				}
	        }
			else
			{
				return false;
			}
		}
 
	}	
?>
jusqu'ici tout va je suis bien redirigé vers ma page admin, celle-ci

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
 
 
session_start();
 
require("auth.php");
 
 
 
	if(Auth::isLogged())
	{
 
	}
	else
	{	
		header('location:../index.php');
	}	
 
 
?>
 
<a href = "gestionnews.php" > Cliquer pour gérer les news </a> <br>
<a href = "gestioncom.php" > Cliquer pour gérer les commentaires </a>

Mais il m'est ensuite impossible d'accéder à ces pages...
Voilà par exemple le code de la page gestioncom

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
 
<?php
 
require("auth.php");
 
 
 
	if(Auth::isLogged())
	{
 
	}
	else
	{	
		header('location:../formcom.php');
	}	
 
	require"config.php";
	mysql_connect(DB_HOST,DB_LOGIN,DB_PASS);
	mysql_select_db(DB_BDD);
 
	$sql="SELECT * FROM news";
	$req = mysql_query($sql) or die(mysql_error());
	while($data=mysql_fetch_assoc($req))
	{
		$id=$data["id"];
		echo "<p>{$data["titre"]} -- ";
		echo "<p> {$data["contenu"]} </p>";
		echo "<p align\"right\">".date("j/n/Y G:i",strtotime($data["date"]))."</p>";;
		echo "<p><a href=\"formcom.php?id={$data["id"]}\"> Cliquez ici pour ajouter un commentaire </a></p>";
		$sql="SELECT id FROM comment WHERE news_id={$data["id"]}";
		$req2 = mysql_query($sql) or die(mysql_error());
		echo" Commentaire(s) (".mysql_num_rows($req2).")<br><br><br><br><br>";
 
	}
 
 
?>
<!-- converti date en timestamp nb de seconde écoulé depuis 1er janvier 1970  => voir timestamp sur php.net => vori fonction date !-->


Pourquoi cela ne fonctionne pas ?
Je n'arrive pas à trouver...

Merci d'avance !!
polux31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/02/2011, 01h25   #2
Membre Expert
 
Inscription : septembre 2010
Messages : 1 239
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 1 239
Points : 1 559
Points : 1 559
Il faut aussi mettre session_start(); sur ces pages si tu veux pouvoir récupérer des variables de session...
__________________
- Réalisations
- Interface graphique : génération en javascript d'objets défilants, texte et/ou images, mode horizontal ou vertical.
ABCIWEB est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/02/2011, 16h17   #3
Membre émérite
 
Avatar de alain31tl
 
Alain
Inscription : novembre 2005
Messages : 897
Détails du profil
Informations personnelles :
Nom : Alain
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : novembre 2005
Messages : 897
Points : 910
Points : 910
Citation:
Envoyé par ABCIWEB Voir le message
Il faut aussi mettre session_start(); sur ces pages si tu veux pouvoir récupérer des variables de session...
Oui, et si tant est que ces variables soient déclarées et mises en session.
Je me trompe peut-être mais je n'ai pas vu dans ces sources une quelconque variable mise en session.

Dans ces conditions, celà ne sert à rien de lancer un session_start()...si des variables ne sont pas déclarées comme telles et appartenant à une x session.

Ou alors, je n'ai pas vu toutes les lignes de ces sources.
__________________
Ce n'est pas parce que les choses sont difficiles qu'on n'ose pas les entreprendre.
C'est parce qu'on n'ose pas les entreprendre qu'elles sont difficiles.
alain31tl est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/02/2011, 16h51   #4
Membre Expert
 
Inscription : septembre 2010
Messages : 1 239
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 1 239
Points : 1 559
Points : 1 559
Citation:
Envoyé par alain31tl Voir le message
Oui, et si tant est que ces variables soient déclarées et mises en session.
Je me trompe peut-être mais je n'ai pas vu dans ces sources une quelconque variable mise en session.
C'est dans son premier bloc de code

Code :
$_SESSION['Auth'] = array('login' => $login, 'pass' => $pass);
__________________
- Réalisations
- Interface graphique : génération en javascript d'objets défilants, texte et/ou images, mode horizontal ou vertical.
ABCIWEB est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/02/2011, 01h48   #5
Membre actif
 
Inscription : décembre 2006
Messages : 184
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 184
Points : 198
Points : 198
Code :
$sql = " SELECT id from users where login='$login' and pass='$pass'";
juste au passage on ne teste pas un login/pass de cette manière, si qulqu'un met un login du genre tu risque d'avoir des surprises

sinon ne stock pas non plus le pass ca sert à rien
1) le formulaire de connexion
2) on récupère le user avec le login
3) on compare le pass en base avec celui du formulaire
4) on valide ou pas la session

socké l'id du user devrait suffire

sur chaque page il te faudra un session_start et avec l'id user tu récupère les données que tu aura besoin
Helfima est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/02/2011, 02h12   #6
Membre Expert
 
Inscription : septembre 2010
Messages : 1 239
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 1 239
Points : 1 559
Points : 1 559
Et pour compléter l'information sur la première partie du message de Helfima tu peux regarder ce lien
__________________
- Réalisations
- Interface graphique : génération en javascript d'objets défilants, texte et/ou images, mode horizontal ou vertical.
ABCIWEB 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 07h21.


 
 
 
 
Partenaires

Hébergement Web