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/07/2007, 17h11   #1
Membre du Club
 
Inscription : novembre 2003
Messages : 155
Détails du profil
Informations forums :
Inscription : novembre 2003
Messages : 155
Points : 66
Points : 66
Envoyer un message via ICQ à jncoffy
Par défaut Problème de session

Bonjour, je suis en train de découvrir les variablles sessions et je rencontre actuellement le problème que voici

J'ai une première page, page1.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
 
<?
   include("connect.php");
   //on initialise une session
   session_start();
   if (!isset($_POST["send"]))
     {
     //Si le formulaire n'est pas envoyé, on l'affiche
?>
<form method="post" action="page1.php">
Nom d'utilisateur :
<input type="text" name="mlogin"><br />
Mot de passe :
<input type="password" name="mpass"><br />
<input type="submit" name="send" value="log in">
</form>
<?
     }
   else
     {
     $membre=AddSlashes($_POST["mlogin"]);
     $passw=$_POST["mpass"];
     $sql="SELECT pass FROM membres WHERE login='$membre'";
     $req=mysql_query($sql);
     $res=mysql_fetch_array($req);
     if ($passw!= NULL && $res['pass']==$passw)
       {
       $_session["membre"]=$membre;
       echo "Bienvenue ";
       echo $membre;
       echo "<p>";
       echo "<a href=\"page2.php\"> entrez dans l'espace membre</a>";
       }
     else
      {
      echo "mauvais login ou pass";
      }
    }
?>
qui défini un formulaire et qui l'affiche s'il n'a pas encoré été envoyé. Lorsque le formulaire est envoyé, une recherche dans MySql est établie pour vérifier que le membre existe et, dans ce cas, un message est affiché, ainsi qu'un lien pointant vers une page2.php.

Jusque là, pas de problème. Tout fonctionne.

Le code de ma page2.php est le suivant ;
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 
<?
include("connect.php");
session_start();
if (isset($_SESSION["membre"]))
  {
  $sql="SELECT pass FROM membres WHERE login='".$_SESSION["membre"]."'";
  $req=mysql_query($sql);
  $res=mysql_fetch_array($req);
  echo "bienveue".$_session["membre"];
  echo "votre mot de passe est ".$res['pass'];
  }
else
  {
  echo $_SESSION["membre"];
  echo "désolés, vous n'avez pas accès à cette page. Veuillez vous loguer";
  }
?>
et, lorsque dans la page 1, après avoir authentifié un utilisateur,je clique sur le lien m'amenant vers la page 2, j'obtiens un message d'erreur
Undefined index: membre in e:\easyphp\www\newlook\login\page2.php on line 14

et c'est le test Else qui est exécuté, alors que de devrait être le premier test qui devrait l'être puisque l'utilisateur a bien été correctement identifié à la page 1.

ma page connect.php est classique
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
<? 
//initialisation des variables
$serveur = "localhost";
$login = "root";
$pass = "";
$base = "jncoffy";
 
// connexion au serveur
$id= MYSQL_CONNECT($serveur,$login,$pass);
 
//connexion à la base de données
//(une autre version de procéder) mysql_select_db("$base");
mysql_select_db($base,$id);
?>
Quelqu'un peut-il me dire quelle erreur je fais ? Comment se fait il qu'apparemment la variable session 'membre' créée en page1.php ne soit pas reconnue en page2.php ?
J'ai cherché dans tous les sens sans trouver...

Jean Noël
jncoffy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/07/2007, 17h23   #2
Futur Membre du Club
 
Inscription : janvier 2005
Messages : 70
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 70
Points : 18
Points : 18
Parce que $_SESSION doit être en majuscules...
Hors il est à plusieurs reprises en minuscules dans ton code, notamment dans :
Code :
1
2
3
4
 
 if ($passw!= NULL && $res['pass']==$passw)
       {
       $_session["membre"]=$membre;
essaie :
Code :
$_SESSION["membre"] = $membre;
seblo_scoqi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/07/2007, 18h11   #3
Membre du Club
 
Inscription : novembre 2003
Messages : 155
Détails du profil
Informations forums :
Inscription : novembre 2003
Messages : 155
Points : 66
Points : 66
Envoyer un message via ICQ à jncoffy
Merci seblo_scoqi

Je regarde dès que possibe et je tiens au courant. J'ignorai que la casse des caractères avait son importance concernant les mots clés du PHP

jean Noël
jncoffy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/07/2007, 18h24   #4
Membre du Club
 
Inscription : novembre 2003
Messages : 155
Détails du profil
Informations forums :
Inscription : novembre 2003
Messages : 155
Points : 66
Points : 66
Envoyer un message via ICQ à jncoffy
Effectivement, je viens de modifier la casse de $_SESSION et ça marche

Merci encore

Jean Noël
jncoffy 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 17h19.


 
 
 
 
Partenaires

Hébergement Web