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/06/2006, 23h24   #1
Membre régulier
 
Avatar de Jiraiya42
 
Inscription : mai 2005
Messages : 656
Détails du profil
Informations personnelles :
Âge : 26

Informations forums :
Inscription : mai 2005
Messages : 656
Points : 76
Points : 76
Par défaut Problème de session

Bonjour,

J'ai une fonction de connexion comme suit:

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
 
<?
				require ("connect.php");
				mysql_connect (SERVEUR, NOM, PASSE) or die(mysql_error);
    			mysql_select_db (BASE) or die(mysql_error);
 
				//on extrait les données du formulaire et on crypte le mot de passe
				$pseudo = $_POST['nom'];
				$passe = $_POST['mdp'];
 
				//on va chercher les infos du membre
				$utili= mysql_query("SELECT * FROM adherent WHERE nomadh='$pseudo';");
				$membre = mysql_fetch_object($utili);
				$pseud="$membre->nomadh";
				$pass="$membre->mdpadh";
				$num="$membre->numadh";
				$url="$membre->urladh";
 
				//Si le retour est vide, le pseudo n'existe pas
				if($pseud=="")
	   				{
	      				echo "Le pseudo n'existe pas...";
	      				echo '<meta http-equiv="refresh" content="3;URL=index.php">';
	   				}
				else
	   				{
	      				//On teste si les mots de passe correspondent
	      				if($passe<>$pass)
	         				{
		    					echo '<body onLoad="alert(\'Pas le bon mot de passe...\')">';
		    					echo '<meta http-equiv="refresh" content="3;URL=index.php">';
	         				}
	      				else
	         				{
	            				session_start();
	            				$registered="ok";
    							$_SESSION["registered"]= $registered;
    							$_SESSION["login"] = $pseud;
                				$_SESSION["pwd"] = $pass;
                				$_SESSION["num"] = $num;
	            				$chemin = $_SERVER['SERVER_NAME'].$url;
                                // on redirige notre visiteur vers une page de notre section membre
                                header ('location: page_membre.php');
	         				}
	   				}
		?>
Ensuite je souhaitais protéger des pages pour que les non membres ne puissent les voir dans une page vérif:

Code :
1
2
3
4
5
6
7
8
 
<?
		if(!$_SESSION['registered'])
			{
				echo "<p align=center><font face='Comic Sans MS' size='3' color=#000000>Vous n'êtes pas connecté</font></p>";
				exit();
			}
	?>
Et donc pour protéger les pages, sur chaque je rajoutais:

Code :
1
2
3
4
5
 
<?
session_start();
require("func_verif_session.php");
?>
Et le problème c'est que lorsque quelqu'un de non membre tente d'afficher une page non autorisée ça affiche ça:

Code :
1
2
3
4
 
Notice: Undefined index: registered in c:\program files\easyphp1-7\www\site final\func_verif_session.php on line 24
 
Vous n'êtes pas connecté
Ca fait un moment que je cherche et je n'arrive pas à corriger le problème, quelqu'un peut m'aider svp ?
Jiraiya42 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/06/2006, 23h32   #2
Membre expérimenté
 
Avatar de papyphp
 
Inscription : avril 2005
Messages : 425
Détails du profil
Informations personnelles :
Âge : 62
Localisation : Belgique

Informations professionnelles :
Secteur : Enseignement

Informations forums :
Inscription : avril 2005
Messages : 425
Points : 545
Points : 545
Bonsoir,

Si j'ai bien vu, $_SESSION['registered'] n'obtient une valeur que si le membre est bien enregistré.
Il est donc normal que dans le cas contraire cette variable n'existe pas.
Or tu testes la valeur de celle-ci.
Conclusion : tu pourrais utiliser isset()
Code :
1
2
3
4
5
if(!isset($_SESSION['registered']))
			{
				echo "<p align=center><font face='Comic Sans MS' size='3' color=#000000>Vous n'êtes pas connecté</font></p>";
				exit();
			}
__________________
Lu kinze d' awousse, la Vierje arandje û dusbrôle lu timp. Et ce coup ci, elle ne nous a pas ratés
papyphp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/06/2006, 23h42   #3
Membre régulier
 
Avatar de Jiraiya42
 
Inscription : mai 2005
Messages : 656
Détails du profil
Informations personnelles :
Âge : 26

Informations forums :
Inscription : mai 2005
Messages : 656
Points : 76
Points : 76
Citation:
Envoyé par papyphp
Bonsoir,

Si j'ai bien vu, $_SESSION['registered'] n'obtient une valeur que si le membre est bien enregistré.
Il est donc normal que dans le cas contraire cette variable n'existe pas.
Or tu testes la valeur de celle-ci.
Conclusion : tu pourrais utiliser isset()
Code :
1
2
3
4
5
if(!isset($_SESSION['registered']))
			{
				echo "<p align=center><font face='Comic Sans MS' size='3' color=#000000>Vous n'êtes pas connecté</font></p>";
				exit();
			}
Très juste ! J'avais pensé à ça mais je ne savais pas comment contourné le problème Merci beaucoup ça marche !
Jiraiya42 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 15h47.


 
 
 
 
Partenaires

Hébergement Web