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 25/04/2006, 11h01   #1
Nouveau Membre du Club
 
Inscription : septembre 2003
Messages : 119
Détails du profil
Informations forums :
Inscription : septembre 2003
Messages : 119
Points : 25
Points : 25
Par défaut [Sécurité] Problème de variables de session

bonjour

j'ai ma page de login dans lequel je verifie si l'utilisateur est connu et si il a le bon mot de passe. Si c'est le bon je mémorise dans les variables de session comme j'ai trouvé dans un tuto, toutes ces informations.

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
<?
require("include/connect.php");
// pensez a ouvrir une connexion vers mysql ici
// voir les exercices dans le menu de droite pour cela.
 
if(isset($_POST) && !empty($_POST['login']) && !empty($_POST['pass']))
{
  extract($_POST);
  // on recupère le password de la table qui correspond au login du visiteur
  $sql = "select * from user where Login_user='".$login."'";
  $req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
  $data = mysql_fetch_assoc($req);
 
  if($data['Mdp_User'] != $pass)
  {
    echo '<p>Mauvais login / password. Merci de recommencer</p>';
  }
  else
  {
      $_SESSION['Nom_User'] = $data['Nom_User'];                        //
    $_SESSION['Prenom_User'] = $data['Prenom_User'];                //
    $_SESSION['Service_User'] = $data['Service_User'];                //On sauvegarde les informations de 
    $_SESSION['Email_User'] = $data['Email_User'];                    //l'utilisateur dans les variables de sessions
    $_SESSION['Tel_User'] = $data['Tel_User'];                        //
    $_SESSION['Last_Connect_User'] = $data['Last_Connect_User'];    //
    header('Location: index2.php');                                    // permet de charger la page du site apres authentification
  }   
}
else 
{
  echo '<p>Vous avez oublié de remplir un champ.</p>';
}
?>
Selon le tuto dans chaque page il fallait inclure ceci afin de garder la session ouverte pour chaque page :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
<?
session_start();
/*
si la variable de session login n'existe pas cela siginifie que le visiteur
n'a pas de session ouverte, il n'est donc pas logué ni autorisé à
acceder à l'espace membres
*/
if(!isset($_SESSION['login'])) {
  echo 'Vous n\'êtes pas autorisé à acceder à cette zone';
  include('index.php');
  exit;
}
?>
Ainsi donc je l'inclus dans chaque page.

pour tester si mes variable passaient j'ai mis ceci dans une autre page

Code :
1
2
3
4
<?
        echo 'nom : ',$_SESSION['Nom_User'],'<br />
              prenom : ',$_SESSION['Prenom_User'],'<br />';
?>
Mais les variables ne passe pas, j'ai des erreures.

nom :
Notice: Undefined index: Nom_User in c:\program files\easyphp1-8\www\intranet\index2.php on line 74

prenom :
Notice: Undefined index: Prenom_User in c:\program files\easyphp1-8\www\intranet\index2.php on line 75


alors que su la page ou ce fait le login ca marche.

est ce que j'ai oublié quelque chose ou j'ai mal fais quelque chose?

amicalement
budylove est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/04/2006, 11h02   #2
Membre chevronné
 
Inscription : juillet 2003
Messages : 625
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 625
Points : 600
Points : 600
Bonjour,

essayes ça dans cette page

Code :
1
2
3
4
5
 
<? session_start();
        echo 'nom : ',$_SESSION['Nom_User'],'<br />
              prenom : ',$_SESSION['Prenom_User'],'<br />';
?>
__________________
Le savoir est utile que s'il est partagé par tous.
/(bb|[^b]{2})/
!sleep() ? array((string))
syl2095 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/04/2006, 11h05   #3
Membre régulier
 
Inscription : avril 2005
Messages : 82
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 82
Points : 73
Points : 73
Envoyer un message via MSN à hebus73
Ton code est bon pour les variables de session par contre fait un echo lorsque tu récupère tes valeurs depuis SQL pour vérifier si elles ont bien une valeur
hebus73 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/04/2006, 11h05   #4
Nouveau Membre du Club
 
Inscription : septembre 2003
Messages : 119
Détails du profil
Informations forums :
Inscription : septembre 2003
Messages : 119
Points : 25
Points : 25
c'est une reponse plus que rapide...

mais ca ne marche toujours pas, voila ce que ca me mets.

Notice: A session had already been started - ignoring session_start() in c:\program files\easyphp1-8\www\intranet\index2.php on line 74
nom :
Notice: Undefined index: Nom_User in c:\program files\easyphp1-8\www\intranet\index2.php on line 75

prenom :
Notice: Undefined index: Prenom_User in c:\program files\easyphp1-8\www\intranet\index2.php on line 76



oui oui j'ai fais un echo apres les avoir enregistré et elle sont bien passée.
budylove est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/04/2006, 11h08   #5
Membre régulier
 
Inscription : avril 2005
Messages : 82
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 82
Points : 73
Points : 73
Envoyer un message via MSN à hebus73
il faut concaténer ta chaine :
echo 'nom : '.$_SESSION['Nom_User'].'<br />
hebus73 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/04/2006, 11h10   #6
Nouveau Membre du Club
 
Inscription : septembre 2003
Messages : 119
Détails du profil
Informations forums :
Inscription : septembre 2003
Messages : 119
Points : 25
Points : 25
Parse error: parse error in c:\program files\easyphp1-8\www\intranet\index2.php on line 86


si je recopie excatement ce que tu ma marqué dans ma deuxieme page.
budylove est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/04/2006, 11h11   #7
Membre chevronné
 
Inscription : juillet 2003
Messages : 625
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 625
Points : 600
Points : 600
ok je me suis planté j'avais pas lu que tu incluais ton session_start() partout...

tu l'inclues où ton dernier fichier ?
__________________
Le savoir est utile que s'il est partagé par tous.
/(bb|[^b]{2})/
!sleep() ? array((string))
syl2095 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/04/2006, 11h14   #8
Nouveau Membre du Club
 
Inscription : septembre 2003
Messages : 119
Détails du profil
Informations forums :
Inscription : septembre 2003
Messages : 119
Points : 25
Points : 25
bin j'ai mon index.php qui permet a l'utilisateur de se loguer.

qui ouvre l'index2.php et tout en haut de mon index2.php j'inclu le fichier qui verifie les sessions.

c'est ca que tu veux savoir?
budylove est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/04/2006, 11h16   #9
Membre chevronné
 
Inscription : juillet 2003
Messages : 625
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 625
Points : 600
Points : 600
montre nous ton index2.php stp
__________________
Le savoir est utile que s'il est partagé par tous.
/(bb|[^b]{2})/
!sleep() ? array((string))
syl2095 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/04/2006, 11h17   #10
Membre régulier
 
Inscription : avril 2005
Messages : 82
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 82
Points : 73
Points : 73
Envoyer un message via MSN à hebus73
tu as remplacer tes virgules par des point sinon ca ne peut pas marcher
hebus73 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/04/2006, 11h18   #11
Nouveau Membre du Club
 
Inscription : septembre 2003
Messages : 119
Détails du profil
Informations forums :
Inscription : septembre 2003
Messages : 119
Points : 25
Points : 25
voila

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
<?
include('verif_login.php');
?> 
 
<html>
<head>
 <title>Site Intranet </title>
       <link rel="shortcut icon" href="!!favicon.ico" >
       <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
       <link rel="stylesheet" media="screen" type="text/css" title="Site Intranet" href="style.css" />
</head>
 
<center><body>
 
 <div id="page">
 
            <!-- en tête -->
    <div id="en_tete">
 
    Site Intranet    
 
    </div>
 
            <!-- menu -->
    <div class="menu">
    <table>
        <tr>
            <td>
               <ul>
                   <li><a href="index2.php?page=Accueil.php">Accueil</a></li>
                   <li><a href="index2.php?page=Achat">Achat</a></li>
                   <li><a href="index2.php?page=Commercial">Commercial</a></li>
                   <li><a href="index2.php?page=Comptabilite">Comptabilité</a></li>
                   <li><a href="index2.php?page=Direction">Direction</a></li>
                   <li><a href="index2.php?page=Expedition">Expédition</a></li>
                   <li><a href="index2.php?page=Maintenance">Maintenance</a></li>
                   <li><a href="index2.php?page=Process">Process</a></li>
                   <li><a href="index2.php?page=Production">Production</a></li>
                   <li><a href="index2.php?page=Qualite">Qualité</a></li>
               </ul>
            </td>
        </tr>
    </table>    
   </div>
 
 
            <!-- corps -->
    <div id="corps">
 
<?php
 
  // On définit le tableau contenant les pages autorisées
  // ----------------------------------------------------
  $pageOK = array('Accueil'=>'Pages/accueil.php',
                  'Achat'=>'Pages/achat.php',
                  'Commercial'=>'Pages/commercial.php');
 
  // On teste que le paramètre d'url existe et qu'il est bien autorisé
  // -----------------------------------------------------------------
  if ( (isset($_GET['page'])) && (isset($pageOK[$_GET['page']])) ) {
    include($pageOK[$_GET['page']]);   // Nous appelons le contenu central de la page
  } else {
    include('Pages/accueil.php');   // Page par défaut quant elle n'existe pas dans le tableau
  }
 
?>
    </div>
 
            <!-- pied de page -->
 
    <div id="pied_de_page">
    <p>Copyright<br/>
 
<? session_start();
        echo 'nom : ',$_SESSION['Nom_User'],'<br />
                prenom : ',$_SESSION['Prenom_User'],'<br />';
?>
    </p>
    </div>
 
 </div>
</body></center>
 
</html>
budylove est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/04/2006, 11h22   #12
Membre chevronné
 
Inscription : juillet 2003
Messages : 625
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 625
Points : 600
Points : 600
Déjà comme le dit notre collegue concatene avec des . et pas des , et enleve le session_start.

Code :
1
2
3
4
<? 
        echo 'nom : '.$_SESSION['Nom_User'].'<br />
                prenom : '.$_SESSION['Prenom_User'].'<br />';
?>
Est ce que dans ton fichier de login tu as session_start() ?
__________________
Le savoir est utile que s'il est partagé par tous.
/(bb|[^b]{2})/
!sleep() ? array((string))
syl2095 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/04/2006, 11h22   #13
Nouveau Membre du Club
 
Inscription : septembre 2003
Messages : 119
Détails du profil
Informations forums :
Inscription : septembre 2003
Messages : 119
Points : 25
Points : 25
bête et discipliné j'ai fais comme dans les tutos que j'ai trouvé. etant donnée que j'apprend c'ets pas facile de detecter les erreures.
budylove est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/04/2006, 11h24   #14
Nouveau Membre du Club
 
Inscription : septembre 2003
Messages : 119
Détails du profil
Informations forums :
Inscription : septembre 2003
Messages : 119
Points : 25
Points : 25
mon fichier 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
<?
require("include/connect.php");
// pensez a ouvrir une connexion vers mysql ici
// voir les exercices dans le menu de droite pour cela.
 
if(isset($_POST) && !empty($_POST['login']) && !empty($_POST['pass']))
{
  extract($_POST);
  // on recupère le password de la table qui correspond au login du visiteur
  $sql = "select * from user where Login_user='".$login."'";
  $req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
  $data = mysql_fetch_assoc($req);
 
  if($data['Mdp_User'] != $pass)
  {
    echo '<p>Mauvais login / password. Merci de recommencer</p>';
  }
  else
  {
      $_SESSION['Nom_User'] = $data['Nom_User'];                        //
    $_SESSION['Prenom_User'] = $data['Prenom_User'];                //
    $_SESSION['Service_User'] = $data['Service_User'];                //On sauvegarde les informations de 
    $_SESSION['Email_User'] = $data['Email_User'];                    //l'utilisateur dans les variables de sessions
    $_SESSION['Tel_User'] = $data['Tel_User'];                        //
    $_SESSION['Last_Connect_User'] = $data['Last_Connect_User'];    //
    header('Location: index2.php');                                    // permet de charger la page du site apres authentification
  }   
}
else 
{
  echo '<p>Vous avez oublié de remplir un champ.</p>';
}
?>
 
 
<html>
<head>
</head>
 <body>
 
 
 <form action="index.php" method='post'>
<table align="center" border="0">
  <tr>
    <td>Login :</td>
    <td><input type="text" name="login" maxlength="250"></td>
  </tr>
  <tr>
    <td>Password</td>
    <td><input type="text"name="pass" maxlength="10"></td>
  </tr>
  <tr>
    <td colspan="2" align="center"><input type="submit" value="log in"></td>
  </tr>
</table>
</form>
 </body>
</html>

désolé de vous faire vous creuser la tete . mais merci
budylove est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/04/2006, 11h25   #15
Membre chevronné
 
Inscription : juillet 2003
Messages : 625
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 625
Points : 600
Points : 600
mest un session_start() en haut de ta page pour voir
__________________
Le savoir est utile que s'il est partagé par tous.
/(bb|[^b]{2})/
!sleep() ? array((string))
syl2095 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/04/2006, 11h25   #16
Nouveau Membre du Club
 
Inscription : septembre 2003
Messages : 119
Détails du profil
Informations forums :
Inscription : septembre 2003
Messages : 119
Points : 25
Points : 25
voila j'ai trouvé l'erreure...

pas de session_start(); quel boulet..

excusé moi.
budylove est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/04/2006, 11h26   #17
Membre chevronné
 
Inscription : juillet 2003
Messages : 625
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 625
Points : 600
Points : 600
un petit resolu
__________________
Le savoir est utile que s'il est partagé par tous.
/(bb|[^b]{2})/
!sleep() ? array((string))
syl2095 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 02h32.


 
 
 
 
Partenaires

Hébergement Web