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 21/02/2007, 18h04   #1
Invité de passage
 
Inscription : août 2006
Messages : 16
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 16
Points : 4
Points : 4
Par défaut Pas de session ? alors que je sais me connecter ...

à toutes et à tous,

Mise en situation :


J'ai créé un espace membre. Je me connecte SANS problème à l'espace membre. Les login et mot de pass sont dans une base SQL (requete voir fichier connexion.php)

Dans le fichier index.php (deuxieme code) j'inclus mon fichier (debut du code) de connexion.php si le formulaire a été remplis.

Mon problème :

La commande suivante est executée vue que la réponse de la base sql est 1 (partie du fichier connexion.php)

Citation:
if ($data[0] == 1) {
session_start();
$_SESSION['login'] = $_POST['login'];

header("Location: phpinfo.php");
exit;

Ensuite une fois rediriger vers la page phpinfo.php le code suivant est executé et je me fait rediriger vers index.php alors que le code cidessu à été executé

Citation:
session_start() ;
// on vérifie si l'utilisateur est identifié
if ( !isset( $_SESSION['login'] )) {
// la variable de session n’existe pas,
// donc l'utilisateur n'est pas authentifié
// On redirige sur la page permettant de s’authentifier
header('Location: index.php') ;
// on arrête l'exécution
exit() ;
}
La question :

Quel est le problème ?


=======Les différents scripts============

fichier "connexion.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
<?php
// on teste si le visiteur a soumis le formulaire de connexion
	if ((isset($_POST['login']) && !empty($_POST['login'])) && (isset($_POST['pass']) && !empty($_POST['pass']))) {
 
        $base = mysql_connect('xxxx', 'root', 'xxxx'); 
        mysql_select_db ('phpbb', $base);
 
        // on teste si une entr&eacute;e de la base contient ce couple login / pass
        $sql = 'SELECT count(*) FROM phpbb_users  WHERE username ="'.addslashes($_POST['login']).'" AND user_password ="'.md5(addslashes($_POST['pass'])).'"';
        $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
        $data = mysql_fetch_array($req);
 
        mysql_free_result($req);
        mysql_close();
 
        // si on obtient une r&eacute;ponse, alors l'utilisateur est un membre
        if ($data[0] == 1) {
			session_start();
			$_SESSION['login'] = $_POST['login'];
 
			header("Location: phpinfo.php"); 
            exit;
        }
        // si on ne trouve aucune r&eacute;ponse, le visiteru s'est tromp&eacute; soit dans son login, soit dans son mot de passe
        elseif ($data[0] == 0) {
            $erreur = '<b><font color="#FF0000">Compte non reconnu.</font></b>';
        }
        // sinon, alors la, il y a un gros probl&egrave;me :)
        else {
            $erreur = '<b><font color="#FF0000">Prob&egrave;me dans la base de donn&eacute;es : plusieurs membres ont les m&ecirc;mes identifiants de connexion.</font></b>';
        }
    }
    else {
        $erreur = '<b><font color="#FF0000">Au moins un des champs est vide.</font></b>';
    }
 
?>
fichier "index.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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
<?php
 
// on teste si le visiteur a soumis le formulaire de connexion
 
if(isset($_POST['submit_connexion']) && ($_POST['submit_connexion'] == 'connexion'))
{
	include('script/connexion.php');
}
 
// on teste si le visiteur a soumis le formulaire d'inscription
 
if (isset($_POST['inscription']) && ($_POST['inscription'] == 'Inscription')) 
{
	include('script/inscription.php');
}
?>
<html>
<head>
	<title>Accuille</title>
	<link rel="stylesheet" type="text/css" href="styles.css">
 
</head>
<body bgcolor=#FFFFFF leftmargin=0 topmargin=0 marginwidth=0 marginheight=0 background="images/main_bg.jpg">
 
 
<br>
<!--------------------->
<!-- Tableau de haut -->
<!--------------------->
<table width="90%" height="80" border="3" align="center" bgcolor="#DEDEDE" background="images/tabhaut.jpg"> 
	<tr>
  		<td>
		</td>
	</tr>
</table>
<br>
<table width="90%" height="85%" align="center" id="2-1234">
	<tr>
		<td width="250" height="100%"  valign="top">
			<!------------------------->
			<!-- Tableau de droite 1 -->
			<!------------------------->
			<?php include("include/liens.php"); ?>
 
			<table height="5" width="250">
				<tr>
					<td>
					</td>
				</tr>
			</table>
			<?php include("include/google-shearch.php"); ?> 
		</td>
 
		<td width="20" height="100%"></td>
 
		<!------------------------->
		<!-- Tableau de gauche 1 -->
		<!------------------------->
		<td width="100%" height="100%" valign="top">
 
			<table  width="100%" height="100%" border="3" bgcolor="#DEDEDE">
				<tr>
					<td valign="top">
					 	<div align="center">
					 		<a href="http://fredericbalon.be/sms.php"><img src="http://fredericbalon.be/smsfree2.jpg"/></a>
						</div><br>
						extranet<br>
					</td>
				</tr>
			</table>
 
		</td>
 
		<td width="20" height="100%">
		</td>
 
		<td width="250" height="100%" valign="top">
		<!------------------------->
		<!-- Tableau de gauche 2 -->
		<!------------------------->	
			<table width="250" height="50" border="3" bgcolor="#DEDEDE" align="center">
					<tr>
						<td align="center" valign="middle">
							<form method="post" action="index.php">
								  <?php include(dirname(__FILE__).'/include/connexion_form.php'); ?> 
							</form>
						</td>
					</tr>
			 </table>
fichier "phpinfo.php"
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php 
session_start() ; 
// on vérifie si l'utilisateur est identifié 
if ( !isset( $_SESSION['login'] )) { 
	// la variable de session n’existe pas, 
	// donc l'utilisateur n'est pas authentifié 
	// On redirige sur la page permettant de s’authentifier 
	header('Location: index.php') ; 
	// on arrête l'exécution 
	exit() ; 
}
 
phpinfo();
 
?>
fredob est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/02/2007, 23h21   #2
Membre expérimenté
 
Développeur Web
Inscription : avril 2006
Messages : 430
Détails du profil
Informations personnelles :
Localisation : Belgique

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : avril 2006
Messages : 430
Points : 538
Points : 538
est-ce que tu peux t'arranger pour obtenir via la fonction session_id() l'id de session en cours, juste après tes appels à session_start() ? (je sais, ca va faire de l'ouput, donc tes headers ne marcheront plus directement, à toi de t'arranger pour )
on pourra déjà voir si les id de session sont différents en passant de ta page connexion à ta page phpinfo (ce qui semblerait etre le cas, d'où le fait que tu perdes ta session en cours de route).
__________________
Merci à Microsoft pour avoir transformé un métier relativement terne et basé sur une approche bêtement technique et rigoureuse des faits, en challenge quotidien, nécessitant une remise en question permanente à l'échelle du quart d'heure
bkill est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/02/2007, 13h06   #3
Invité de passage
 
Inscription : août 2006
Messages : 16
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 16
Points : 4
Points : 4
Merci pour ta réponse mais j'ai trouvé mon erreur.

J' ai appris qu'il ne falait pas de code html avant la commande session_start();.
Dans le fichier index.php, il y avait deux passage à la ligne avant le "inlude('connexion.php')" et donc considéré comme du code html.

Tout fonctionne à merveille maintenant !!!

Sujet résolu
fredob 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 18h05.


 
 
 
 
Partenaires

Hébergement Web