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 08/03/2007, 13h36   #1
Candidat au titre de Membre du Club
 
Inscription : août 2005
Messages : 135
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 135
Points : 14
Points : 14
Par défaut session_start en debut de page et pourtant comportement chaotique..

Bonjour,
j'ai recherché sur le forum et des sites le fonctionnement de session_start(); je pense avoir saisi le truc, mais j'ai un probléme sur ma page.

en effet, Ma page de login me redirige vers l'index avec les variable de session approprié. La premiére fois tout marche mais lorsque que je rafraichis la page les variables de sessions prennent des valeurs qu'elles ne devraient pas prendre ( un autre utilisateur ).

Voici mon code de login :
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
 
<?
session_start();
 
 
 
 
require('connexion.php');
 
if(isset($_POST) && !empty($_POST['login']) && !empty($_POST['mdp'])) {
 $login = $_POST['login'];
 $mdp = $_POST['mdp'];
 
  // on recupère le password de la table qui correspond au login du visiteur
  $sql = "select * from Membres where login='".$login."'";
  $req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
 
  $data = mysql_fetch_assoc($req);
 
  $droits = $data['droits'];
 
 
 
 
  if  ($data['mdp'] != $mdp) { //||  ( empty($data) ) )  {
    echo '<p>Mauvais login / password. Merci de recommencer</p>';
	 $_SESSION['login'] = "corrupted";
	$_SESSION['droits'] = "corrupted";
 
    require('index.php'); // On inclut le formulaire d'identification
   exit;
  }
 else {
 
 
 
    $_SESSION['login'] = $login;
 
	$_SESSION['droits'] = $droits;
	$_SESSION['id'] = session_id();
 
 
 
	if ( strcmp($droits,"admin") == 0 )
	{
		header("Location:indexa.php");
		}
	else 
		{
			header("Location:indexuser.php");
		}
 
 
 
 
 
  }   
}
else {
  echo '<p>Vous avez oublié de remplir un champ.</p>';
   require('index.php'); // On inclut le formulaire d'identification
   exit;
}
 
 
?>

et mon indexa.php
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 
<? session_start();
 
echo $_SESSION['login'];
echo $_SESSION['droits'];
 
 
require('verifadmin.php');
 
 
 
?>
 
 
 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
 
<html>
// code de la page sans importance...

merci a vous
bonjour69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/03/2007, 13h42   #2
Membre chevronné
 
Inscription : juin 2005
Messages : 572
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Haute Vienne (Limousin)

Informations forums :
Inscription : juin 2005
Messages : 572
Points : 690
Points : 690
J'espère que ton premier bout de code n'est pas celui de verifadmin.php car sinon je ne comprend pas trop.


Tu appelles ton index qui appelle lui meme verifadmin.

verifadmin vérifie que les champs login et mdp ont bien été postés. Si ce n'est pas le cas il rappelle index, qui rappelle alors verifadmin...

Ca m'a l'air d'etre une belle boucle infinie à vrai dire lors du lancement, je ne comprend meme pas comment cela peut fonctionner

Pour ta mise en session personnellement je vérifie avant tout si les sessions existent ou non.
ratapapa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/03/2007, 13h59   #3
Candidat au titre de Membre du Club
 
Inscription : août 2005
Messages : 135
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 135
Points : 14
Points : 14
En fait pour le moment, le fichier verif_admin.php est vide,
il n'y a donc pas de boucle


j'ai essayé de vérifier avant si les sessions n'étaient pas définies mais c'est la même chose.

Merci
bonjour69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/03/2007, 14h05   #4
Membre chevronné
 
Inscription : juin 2005
Messages : 572
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Haute Vienne (Limousin)

Informations forums :
Inscription : juin 2005
Messages : 572
Points : 690
Points : 690
Le premier code correspond à quoi ? quand est il lancé ?
Quel est l'ordonnancement de tes page ?
ratapapa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/03/2007, 14h06   #5
Candidat au titre de Membre du Club
 
Inscription : août 2005
Messages : 135
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 135
Points : 14
Points : 14
voici les warnings :

Citation:
Warning: session_start() [function.session-start]: open(/mnt/99/md1/5/c/flo.barral/sessions/sess_8507d39c2e02c005ff786f1777db8f9f, O_RDWR) failed: No such file or directory (2) in /mnt/99/md1/5/c/flo.barral/projet1V1.0/indexa.php on line 1

Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /mnt/99/md1/5/c/flo.barral/projet1V1.0/indexa.php:1) in /mnt/99/md1/5/c/flo.barral/projet1V1.0/indexa.php on line 1

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /mnt/99/md1/5/c/flo.barral/projet1V1.0/indexa.php:1) in /mnt/99/md1/5/c/flo.barral/projet1V1.0/indexa.php on line 1
Merci
bonjour69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/03/2007, 14h08   #6
Candidat au titre de Membre du Club
 
Inscription : août 2005
Messages : 135
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 135
Points : 14
Points : 14
resalut,
en fait le premier code est la page login.php qui est une page de saisie de login et de mot de passe, le deuxieme est le debut de ma page d'indexa.php ou est redirigé l'utilisateur lorsqu'il est loggé.
Merci
bonjour69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/03/2007, 14h11   #7
Membre chevronné
 
Inscription : juin 2005
Messages : 572
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Haute Vienne (Limousin)

Informations forums :
Inscription : juin 2005
Messages : 572
Points : 690
Points : 690
Ahhh oui tout s'éclaire !

Dans ton premier script tu fais un appel à index.php qui possède un session_start().
Or du coup il n'est pas placé en premier, d'ou cette erreur.

Il faudrait revoir la conception, par exemple faire un <meta refresh> à la place.
ratapapa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/03/2007, 14h24   #8
Candidat au titre de Membre du Club
 
Inscription : août 2005
Messages : 135
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 135
Points : 14
Points : 14
"Dans ton premier script tu fais un appel à index.php qui possède un session_start().
Or du coup il n'est pas placé en premier, d'ou cette erreur."

Comment ca, il n'est pas placé en premier ? dans l'index.php il n'y a pas de code php en fait c juste le code de la page de login, le code que j'ai mis la c'est le code indexa.php qui lui est une nouvelle page donc contient session_start en premier.

Pour résumer::

login.php[index.php] ----redirige vers---> indexa.php


un session start au debut de login.php, un autre au debut de indexa.php


Donc les deux session_start sont bien placé en premier de chaque page c'est donc bien bizarre
bonjour69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/03/2007, 14h26   #9
Membre chevronné
 
Inscription : juin 2005
Messages : 572
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Haute Vienne (Limousin)

Informations forums :
Inscription : juin 2005
Messages : 572
Points : 690
Points : 690
Bon décidément ce n'est vraiment pas clair pour moi pourrais tu mettre distinctement le code et le nom de chaque page ?

Désolé je dois être un peu fatigué
ratapapa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/03/2007, 14h30   #10
Candidat au titre de Membre du Club
 
Inscription : août 2005
Messages : 135
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 135
Points : 14
Points : 14
ok pas de soucis :


login.php ( la page de traitement des login et ouverture de sessions )
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
 
<?session_start();
 
//require('logout.php');
// On écrase le tableau de session
// s'il y une session on l'ecrase
 
/*
if(isset($_SESSION['login'])  ) {
 
 
$_SESSION = array();
 
// On détruit la session
session_destroy();
 
}*/
require('connexion.php');
 
if(isset($_POST) && !empty($_POST['login']) && !empty($_POST['mdp'])) {
 $login = $_POST['login'];
 $mdp = $_POST['mdp'];
 
  // on recupère le password de la table qui correspond au login du visiteur
  $sql = "select * from Membres where login='".$login."'";
  $req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
 
  $data = mysql_fetch_assoc($req);
 
  $droits = $data['droits'];
 
 
 
 
  if  ($data['mdp'] != $mdp) { //||  ( empty($data) ) )  {
			    echo '<p>Mauvais login / password. Merci de recommencer</p>';
				 $_SESSION['login'] = "corrupted";
				$_SESSION['droits'] = "corrupted";
 
			    require('index.php'); // On inclut le formulaire d'identification
			   exit;
			  }
		 else {
 
 
 
		    $_SESSION['login'] = $login;
 
			$_SESSION['droits'] = $droits;
			$_SESSION['id'] = session_id();
 
 
 
 
			if ( strcmp($droits,"admin") == 0 )
			{    
 
				header("Location:indexa.php");
				}
			else 
				{
					header("Location:indexuser.php");
				}
 
 
 
 
 
		  }   
}
else {
  echo '<p>Vous avez oublié de remplir un champ.</p>';
   require('index.php'); // On inclut le formulaire d'identification
   exit;
}
 
 
?>


index.php ( la page de login )
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
 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
 
 
 
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Apoca Processus</title>
 
<script type="text/javascript" src="Ressources/dojo.js"></script>
<script language="JavaScript" type="text/javascript">
	dojo.require("dojo.event.*");
	dojo.require("dojo.widget.LayoutContainer");
	dojo.require("dojo.widget.LinkPane");
	dojo.require("dojo.widget.ContentPane");
	dojo.require("dojo.widget.Tree");
	dojo.require("dojo.widget.TreeSelector");
	dojo.require("dojo.widget.FloatingPane");
	dojo.require("dojo.widget.Dialog");
</script>
 
<style>
/*html, body {
	height: 100%;
	width: 100%;
	overflow: hidden;
}
#main {
	height:100%;
	width: 100%;
 
	position: relative;
}*/
 
 
 
</style>
<LINK rel=stylesheet type="text/css" href="Ressources/style.css">
</head>
<body style="border: 1px solid black;">
<div id="topMenu" dojoType="ContentPane" layoutAlign="top" class="header"
	 style="padding-bottom: 5px;">
 
 
		<!-- <div style="float: right;">
			<button dojoType="Button"   onclick="dojo.widget.byId('options').show()"  >
				Administration
			</button>
		</div>-->
 
		<div align=center><img src='Apoca.jpg'></div>
 
	</div>
 
	<!-- bas de la page -->
 
<div dojoType="SplitContainer"  sizerWidth="3" id="main" sizeMin="500" sizeShare="85" layoutChildPriority='left-right' >
<div id ="bas">
 
	 <div id="Droite"> <!-- style="background-color: #eeffff; width: 70%;">-->
	<div dojoType="ContentPane"  sizeMin="20" sizeShare="20" layoutAlign="client" style="background-color: #eeffff;"
		id="docpane" executeScripts="true">
		<BR><B><center>Bienvenue sur APOCA Processus</B>
		<br/>
		<br/>
 
			<form  method="post" id="form1" action="login.php">
				<div class="formQuestion">
						<span class="emphasise">Login </span>
 
					</div>
				<div class="formAnswer">
						<input type="text" name="login" class="medium" value=""
							dojoType="ValidationTextBox">
					</div>
					<div class="formQuestion">
						<span class="emphasise">Mot de passe</span>
 
					</div>
				<div class="formAnswer">
						<input type="text" name="mdp" class="medium" value=""
							dojoType="ValidationTextBox">
					</div>
				</form>
					<button dojoType="Button" onclick="dojo.byId('form1').submit();">Valider</button>
 
	 pour l'instant , <br/>compte admin  : login/mdp =<br/> apoca/apoca<br/>
	 <br/>compte normal  : login/mdp =<br/> user1/user1<br/>
	 user2/user2<br/>
	 user3/user3<br/>
	 user4/user4<br/>
 
 
	</center>
	</div>
 
 
	</div>
	</div>
 
</div>
 
 
	</div>
	</div>
 
</body>
</html>

indexa.php ( la page affiché une fois loggé )
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
<? session_start();
 
echo $_SESSION['login'];
echo $_SESSION['droits'];
 
 
require('verifadmin.php');
 
?>
<html>
puis le reste de mon site..
 
?>
bonjour69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/03/2007, 14h37   #11
Membre chevronné
 
Inscription : juin 2005
Messages : 572
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Haute Vienne (Limousin)

Informations forums :
Inscription : juin 2005
Messages : 572
Points : 690
Points : 690
Simple vérification : sur indexa.php il n'y a pas un saut de ligne avant l'ouverture des balises php ?

Si oui tente de le supprimer. Sinon je ne vois pas
ratapapa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/03/2007, 14h45   #12
Candidat au titre de Membre du Club
 
Inscription : août 2005
Messages : 135
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 135
Points : 14
Points : 14
Non malheuresement il n'y est pas
bonjour69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/03/2007, 14h51   #13
Membre chevronné
 
Inscription : juin 2005
Messages : 572
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Haute Vienne (Limousin)

Informations forums :
Inscription : juin 2005
Messages : 572
Points : 690
Points : 690
Si j'ai bien compris la première fois ca fonctionne bien, et c'est quand tu fais un refresh que ca ne fonctionne plus.

Peux tu détailler ce refresh ? (F5, un bouton, etc.)
ratapapa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/03/2007, 14h57   #14
Candidat au titre de Membre du Club
 
Inscription : août 2005
Messages : 135
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 135
Points : 14
Points : 14
Ouép c'est bien ca un refresh avec F5, et puis si j'attribue une option dans ma page qui conduit a la rafraichir (formulaire etc..) c'est la même chose.

j'ai deja testé sur plusieurs navigateurs et plusieurs machines.
bonjour69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/03/2007, 15h34   #15
Membre chevronné
 
Inscription : juin 2005
Messages : 572
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Haute Vienne (Limousin)

Informations forums :
Inscription : juin 2005
Messages : 572
Points : 690
Points : 690
On va bien finir par trouver : sur quelle page appliques tu le refresh ?
ratapapa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/03/2007, 16h58   #16
Candidat au titre de Membre du Club
 
Inscription : août 2005
Messages : 135
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 135
Points : 14
Points : 14
sur l'indexa.php
bonjour69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/03/2007, 17h07   #17
Membre chevronné
 
Inscription : juin 2005
Messages : 572
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Haute Vienne (Limousin)

Informations forums :
Inscription : juin 2005
Messages : 572
Points : 690
Points : 690
Joker je sèche.

En relisant le message d'erreur on dirait que c'est un problème de droits d'accès...
Si tu es sur un hébergeur autorise t'il les sessions ?
ratapapa 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 09h00.


 
 
 
 
Partenaires

Hébergement Web