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 30/08/2006, 17h42   #1
Membre confirmé
 
Inscription : mars 2003
Messages : 674
Détails du profil
Informations forums :
Inscription : mars 2003
Messages : 674
Points : 242
Points : 242
Par défaut Récupérer le nom utilisateur

Maintenant que la communauté m'a aidé à résoudre mon problème de session, j'ai un autre problème.
Le site est divisé en 3 parties:
- 1 partie visible par tout le monde,
- 1 partie où il faut se connecter pour avoir accès à une newsletter,
- 1 partie payante

Après avoir vérifier le nom utilisateur et le mot de passe :
Code :
1
2
	   $_SESSION['utilisateur'] = $utilisateur;
	   $_SESSION['acces'] = $acces;
Quand la personne veut ouvrir la page payante je demande le code d'accès
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
   $val='';
   if(isset($_POST['codeconf']))      $code=$_POST['codeconf'];
   else	$code = "";
   // on vérifie si l'identifiant et le mot de passe sont renseignés
C'est que je voudrais faire avant de vérifier le code d'accès
   if (!empty($_POST['codeconf'])) { 
	$sql = mysql_query("SELECT * FROM admin WHERE acces ='".$code."'",$connexion);
	if (mysql_num_rows($sql) > 0)
	{
	   $val="ok";
	   $res = mysql_fetch_array($sql);
           $acces = $res['acces'];
	}
	else {
	   $val="rien";
	} 
   }
   if ($val === "rien"){
      ?><font face="verdana" size="1" color="red"><b>Code d'accès invalide</b></font><?
   }
?>
Question : A ce niveau là je voudrais savoir si l'utilisateur s'est loger où pas et pour cela je voudrais savoir comment récupérer son nom.
J'espère que ma question est claire!!
philippef est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/08/2006, 17h45   #2
Expert Confirmé
 
Avatar de KiLVaiDeN
 
Inscription : octobre 2003
Messages : 2 714
Détails du profil
Informations forums :
Inscription : octobre 2003
Messages : 2 714
Points : 2 689
Points : 2 689
Salut,

Je ne comprend pas le problème, si tu utilises les sessions ? C'est logiquement là que tu places une variable avec le login si la personne est identifiée; tu testes si le login est renseigné avec un isset sur $_SESSION['login'].

De plus, dans ton code, je mettrais plutot ce test :

A+
__________________
K
KiLVaiDeN est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/08/2006, 18h24   #3
Membre confirmé
 
Inscription : mars 2003
Messages : 674
Détails du profil
Informations forums :
Inscription : mars 2003
Messages : 674
Points : 242
Points : 242
Je ne comprends plus
début de ma pagfe index.php
Code :
1
2
3
<?php 
if (!isset($_GET['page'])) $page= 'accueil'; else $page= $_GET['page'];
?>
Quand la personne s'est loger j'affiche ma page où je vérifie que la personne s'est loger avant de lui demander son 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
<?php
session_start(); 
if(!isset($_SESSION['utilisateur'])) {
      header("Location: index.php?page=log"); 
      exit;
}
// connection à la base de données
require ('connect.php');
?>
..............
<form name="interro" method="Post" action="index.php?page=reseaux">
................
acces aux réseaux
//--> 
<?php
   $val='';
   if(isset($_POST['codeconf']))      $code=$_POST['codeconf'];
   else	$code = "";
   // on vérifie si l'identifiant et le mot de passe sont renseignés
   if (!empty($_POST['codeconf'])) { 
	$sql = mysql_query("SELECT * FROM admin WHERE acces ='".$code."'",$connexion);
	if (mysql_num_rows($sql) > 0)
	{
	   $val="ok";
	   $res = mysql_fetch_array($sql);
           $acces = $res['acces'];
	}
	else {
	   $val="rien";
	} 
   }
   if ($val === "rien"){
      ?><font face="verdana" size="1" color="red"><b>Code d'accès invalide</b></font><?
   }
?>
</form>
Ce que je voudrais c'est envoyer la personne à la page log.php si elle s'est pas loger sinon j'affiche ma page où je lui demande son code.

Le message d'erreur (toujours le même)
Code :
1
2
3
4
 
Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at c:\weblocal\sites\reseauxsante\index.php:13) in c:\weblocal\sites\reseauxsante\reseaux_1.php on line 2
 
Warning: Cannot modify header information - headers already sent by (output started at c:\weblocal\sites\reseauxsante\index.php:13) in c:\weblocal\sites\reseauxsante\reseaux_1.php on line 4
Merci d'avance
philippef est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/08/2006, 19h00   #4
Membre confirmé
 
Inscription : mars 2003
Messages : 674
Détails du profil
Informations forums :
Inscription : mars 2003
Messages : 674
Points : 242
Points : 242
Sur la page que j'affiche quand on s'est loger , j'ai mis au début
Code :
1
2
3
 
<?php
echo $_SESSION['utilisateur'];
et j'ai un message comme quoi la variable n'est définie?????????
philippef est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/08/2006, 08h23   #5
Expert Confirmé
 
Avatar de KiLVaiDeN
 
Inscription : octobre 2003
Messages : 2 714
Détails du profil
Informations forums :
Inscription : octobre 2003
Messages : 2 714
Points : 2 689
Points : 2 689
Salut,

Il faut faire un session_start sur chaque page

A+
__________________
K
KiLVaiDeN est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/08/2006, 11h11   #6
Membre confirmé
 
Inscription : mars 2003
Messages : 674
Détails du profil
Informations forums :
Inscription : mars 2003
Messages : 674
Points : 242
Points : 242
En fait je devais ouvrir une session sur ma page index (je travaille avec include)
enfin je pense que c'était l'erreur parce que ça marche
Code :
1
2
3
4
5
6
<?php 
session_start();
if (!isset($_SESSION['utilisateur'])) {
} 
if (!isset($_GET['page'])) $page= 'accueil'; else $page= $_GET['page'];
?>
Il me reste encore un petit problème.
Lorsque la personne saisit son code personnel, je veux ouvrir une page "reseaux.php" sinon je reste sur la page "reseaux_1.php".
J'ai déjà testé mon code mais il m'ouvre ma page "reseaux.php" même si le code est faux.
Mon erreur doit être grosse mais je vois pas et pour tout dire j'ai tellemeent galéré avec mes sessions que bon......voilà le code de ma page "reseaux_1.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
<?php
// connection à la base de données
require ('connect.php');
?>
<p align="center">
<!-- 
acces aux réseaux
//--> 
<form name="interro" method="Post" action="index.php?page=reseaux">
<font color="black" size="2" face="Tahoma" >
<table border="0" style="margin-left:40px; margin-top:20px;">
	<tr>
		<td align="left"><font face="verdana" size="1">
			Pour accéder à la liste des réseaux vous devez avoir souscrit un <a href="index.php?page=abo">abonnement</a> aux réseaux. 
			<br><br>
			Pour accéder à la liste, entrer le code confidentiel qui vous a été communiqué puis valider.<br><br>
		</td>
	<tr>
		<td align="left"><font face="verdana" size="1">Code confidentiel : <input type="text" name="codeconf" value="">
			<input type="submit" name="valid" value="Valider" style="height:20px; font-size:9px">
			<br><br>
		</td>
	</tr>
	<tr>
		<td><font face="verdana" size="1">Code d'accès oublié ?
			<span class="choix" onclick="hide('mondiv')"><font color="blue">cliquer ici</span></td>
	</tr>
</table>
<?php
   if(isset($_POST['codeconf']))      $code=$_POST['codeconf'];
   else	$code = "";
   if (!empty($_POST['codeconf'])) { 
	$sql = mysql_query("SELECT * FROM admin WHERE acces ='".$code."'",$connexion);
	if (mysql_num_rows($sql) > 0)
	{
	   $res = mysql_fetch_array($sql);
           $acces = $res['acces'];
	}
	else {
	   ?><font face="verdana" size="1" color="red"><b>Code d'accès invalide</b></font><?
	}
   }
?>
Je crois qu'apres ça devrait aller mieux.
Merci d'avance
philippef est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/08/2006, 11h18   #7
Expert Confirmé
 
Avatar de KiLVaiDeN
 
Inscription : octobre 2003
Messages : 2 714
Détails du profil
Informations forums :
Inscription : octobre 2003
Messages : 2 714
Points : 2 689
Points : 2 689
Salut,

Il faut plutot le code de vérification du login pass, ainsi que la redirection vers reseaux.php ou reseaux_1.php.

A priori, ta page reseaux_1.php ne devrait pas être en cause.

de plus, je tiens à te faire part d'une solution qui pourrait être utile pour ton projet :

Théoriquement, tu peux inclure en tête de toutes tes pages, une méthode de vérification de l'authentification. Avec un require_once par exemple. Avant l'appel à cette page, tu peux gérer un "niveau d'authentification", comme suit :

Code :
1
2
3
<?php
$niveauAuth = 1;
require_once('authentification.php');
Ta variable niveauAuth contiendrait donc un entier, 0 pour les pages publiques, et 1 pour les pages où une authentification est nécessaire ( tu peux aussi imaginer des chiffres plus grands, ou bien une méthode maison pour récupérer ce niveau en fonction de la page en cours ).

Dans ta page authentification.php, tu vérifies que ta variable de session est bien settée, et que ton niveau est suffisant pour afficher la page; sinon header("Location:...");

A+
__________________
K
KiLVaiDeN est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/08/2006, 11h32   #8
Membre confirmé
 
Inscription : mars 2003
Messages : 674
Détails du profil
Informations forums :
Inscription : mars 2003
Messages : 674
Points : 242
Points : 242
Sur un site que j'ai fait j'avais déjà utilisé un système de niveau d'accès mais je l'avais intégré dans ma table des membres et je le récupérais lors du logging pour afficher où non certaines pages.

Qu'en penses tu?
philippef est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 05h25.


 
 
 
 
Partenaires

Hébergement Web