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 16/03/2007, 11h10   #1
Membre actif
 
Homme Arnaud
Inscription : décembre 2006
Messages : 871
Détails du profil
Informations personnelles :
Nom : Homme Arnaud
Âge : 27
Localisation : France, Seine Maritime (Haute Normandie)

Informations forums :
Inscription : décembre 2006
Messages : 871
Points : 195
Points : 195
Par défaut Identification par session : erreur

Bonjour,

Depuis hier, j'essaie de faire un site web avec une identification par session.

Je l'ai déjà fais et ça fonctionnait bien, mais là, rien ne fonctionne. J'ai un problème de variable SESSION...

Voici mon code :

Page index.php
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 
<?
session_start();
//Si nous avons le N°ID de l'utilisateur, alors il peut consulter la page
if ($_SESSION['user_id']){
?>
 
<!-- DEBUT PAGE HTML -->
...
<!-- FIN PAGE HTML -->
 
<?php
}
//Sinon on affiche la page de login
else{
	include("login/login.php");
}
?>
login.php

Code HTML :
1
2
3
4
5
6
7
8
9
10
 
<form action="login/verification.php" method="post" name="identification" id="identification">
      <span class="texte_blanc">Identification</span><br />
      <input type="text" onfocus="if(this.value=='Identifiant') this.value='';" onblur="if(this.value=='') this.value='Identifiant';" value="Identifiant" class="formtext" name="login" />
      <img src="spacer.gif" alt=" " width="5" height="5" border="0" />
      <input type="password" class="formtext"  name="password" onfocus="if(this.value=='Mot de passe') this.value='';" onblur="if(this.value=='') this.value='Mot de passe';" value="Mot de passe" />
      <br />
      <img src="spacer.gif" alt=" " width="5" height="5" border="0" /><br />
      <input type="submit" class="bouton" value="Se connecter" />
</form>


verification.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
 
<?php
//connexion SQL
require_once('../mysql/connexion_sql.php');
 
//Récupération des variables du formulaire login.php
$login = $_POST["login"];
$password = md5($_POST["password"]);
 
//SQL : vérifie si le login et mot de passe sont correctes
$request_user=mysql_query("SELECT * FROM technicien WHERE login = '$login' AND password = '$password'");
 
//Si login et mot de passe correct
if(mysql_num_rows($request_user)>0){
	$res_user=mysql_fetch_assoc($request_user); 
	$_SESSION['user_id']=$res_user['id'];
	$_SESSION['prenom_nom_technicien']=$res_user['prenom']." ".$res_user['nom'];
	$_SESSION['email']=$res_user['email'];
	$_SESSION['statut']=$res_user['statut'];
	}
 
//Sinon afficher un message box pour dire que le login et le mot de passe sont incorrectes
else{
 
	?>
	<script language="javascript" type="text/javascript">
	alert( "Nom d'utilisateur ou mot de passe incorrect. Merci de réessayer." );
	</script>
	<?php
}
?>
Avec ce code, j'ai deux problèmes :

1. une erreur sur la page index.php lorsque la variable session n'exsiste pas (la 1er fois qu'on affiche la page index.php)

Notice: Undefined index: user_id in c:\program files\easyphp1-8\www\hd\index.php on line 4

2. Lorsque que je reviens sur la page index.php, j'ai l'impression que la variable session $_SESSION['user_id'] n'exsiste pas (après le traitement de la page vérification.php).

Auriez vous une idée ?

Merci d'avance

Arnaud

P.S j'aimerai faire une redirection une fois le traitement de la page verification.php avec un header(), mais si je met le header() au début de la page, le traitement s'effectue pas et si je le met dans mes conditions, j'ai une erreur...
arnaudperfect est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/03/2007, 11h19   #2
Membre habitué
 
Inscription : mars 2007
Messages : 87
Détails du profil
Informations personnelles :
Âge : 25
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : mars 2007
Messages : 87
Points : 109
Points : 109
bonjour,

plusieurs points:

1- il te manque session_start dans verification.php

2- si tu veux utiliser header(), il ne faut pas avoir réaliser de print/echo avant. Le meilleur endroit pour le placer est apres la définition de tes variables de session.

3- dans index.php utilise
Code :
1
2
 
if (isset($_SESSION['user_id'])){
(mais il me semblé que ça marché comme ça,m'enfin ! )

4- Pour index.php je te conseille plutot de faire:
Code :
1
2
3
4
5
6
7
8
9
 
<?
session_start();
//Si nous avons le N°ID de l'utilisateur, alors il peut consulter la page
if (!isset($_SESSION['user_id'])){
      header('Location: login.php');
}
?>
<!-- ta page -->
sinon ça semble bon
supergogol est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/03/2007, 11h40   #3
Membre actif
 
Homme Arnaud
Inscription : décembre 2006
Messages : 871
Détails du profil
Informations personnelles :
Nom : Homme Arnaud
Âge : 27
Localisation : France, Seine Maritime (Haute Normandie)

Informations forums :
Inscription : décembre 2006
Messages : 871
Points : 195
Points : 195
Youpi ! Ca marche !

C'est claire que c'est plus pratique ta méthode concernant la page index.php !

Pour sécuriser les pages c'est plus rapide, il y a juste un bout de code à mettre.

Le problème qu'il me reste est la redirection...

J'ai fais comme ca :

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
//Ouverture SESSION
session_start();
 
//connexion SQL
require_once('../mysql/connexion_sql.php');
 
//Récupération des variables du formulaire login.php
$login = $_POST["login"];
$password = md5($_POST["password"]);
 
//SQL : vérifie si le login et mot de passe est correcte
$request_user=mysql_query("SELECT * FROM technicien WHERE login = '$login' AND password = '$password'");
 
//Si login et mot de passe correct
if(mysql_num_rows($request_user)>0){
	$res_user=mysql_fetch_assoc($request_user); 
	$_SESSION['user_id']=$res_user['id'];
	$_SESSION['prenom_nom_technicien']=$res_user['prenom']." ".$res_user['nom'];
	$_SESSION['email']=$res_user['email'];
	$_SESSION['statut']=$res_user['statut'];
 
	//Redirection
	header('Location: ../index.php');
}
 
//Sinon afficher un message box pour dire que le login et le mot de passe sont incorrectes
else{
 
	?>
	<script language="javascript" type="text/javascript">
	alert( "Nom d'utilisateur ou mot de passe incorrect. Merci de réessayer." );
	</script>
	<?php
}
?>
arnaudperfect 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 21h15.


 
 
 
 
Partenaires

Hébergement Web