IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Perte de variable session après header [PHP 5.2]


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 13
    Par défaut Perte de variable session après header
    Bonjour,

    Alors voilà depuis la mise en ligne de mon site sur un serveur mutualisé ovh, j'ai un problème de perte de variable session.
    Je m'explique : Le problème se situe au niveau de ma page de login

    Voici un plan du processus :

    login.php -> login_proc.php -> cpanel.php

    login : Page de login simple avec formulaire
    login_proc : processus de validation du pseudo mot de passe etc...
    cpanel.php : Page du compte d'arrivé apres login

    Le problème c'est que la page cpanel.php redirige automatique à login.php (normal c'est fait exprès si on est pas logué), mais ceci se passe meme apres le login. En effet, cpanel.php verifie si les variables de sessions sont bien crées, ce qui n'est pas le cas...

    après analyse, j'ai remarqué que dans login_proc.php, les variables de session sont bien definies mais qu'après le header pour être redigé vers cpanel.php, les variables disparraissent !

    Que faire ??

    Voici les bouts de codes : (je précise que j'utilise un include dans login_proc.php car j'ai crée une classe pour gérer les sessions
    et il n'y a pas de session_start dans cette classe, normal vu qu'elle est "include" directement dans la page login_proc.php qui elle a son session_start)
    Bref le problème ne se situe pas la mais où il y a le header qui envoie vers cpanel.php

    login_proc.php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    <?php 
    session_name('dif'); 
    session_start(); 
    ob_start(); 
     
    require("includes/Dbn/libphp1.inc"); // Database Connection Class 
    require("includes/qu/libphp.M.inc"); // Query Class 
    require("includes/session.inc.php"); // Session management class 
     
    // Check if submit is enabled, and $_POST[register_data] is true 
    if( (isset($_POST['submit'])) and (isset($_POST['loginata']) == "DC(*gddgdsgdgssg")) 
    { 
          /* 
          Html Field Value -> Required name for input tag 
           
          eg. <input type="textbox" id="user_name" name="user_name" value ="" /> 
           
          Email Address = user_email 
          Password = user_password 
          Login Button = submit 
           
          */ 
     
          try 
          { 
     
          $user_email = escape($_POST['user_email']); 
          $password = $_POST['user_password']; 
     
          // Check email address for validity       
          if( (!(eregi('^[a-zA-Z0-9._-]+@[a-zA-Z0-9-]+\.[a-zA-Z.]{2,5}$', $user_email)) ) ) 
          { 
          // Invalid email address 
          header("Location: login.php?e=0"); 
          break; 
          } 
     
          // If password is invalid 
          if((strlen($password) < PASSWORD_MIN_CHAR) or (strlen($password) > PASSWORD_MAX_CHAR)) 
          { 
          // Invalid password 
           header("Location: login.php?e=1"); 
           break; 
          } 
     
          $password = md5($password); 
     
          // Connect to mysql database 
           $conn = MysqlConnect::connect(); 
          MysqlConnect::db_use($conn, "fsdfdfdh"); 
     
          // Open new instance of the query class 
          $query = new MysqlQuery($conn); 
     
          // Check for email already in DB 
          $qmail = $query->GetSingleQuery('--SINGLE',"SELECT user_name,user_email,user_password,id FROM dif_users WHERE user_email = '{$user_email}';",array("user_name","user_email","user_password","id")); 
     
          // Check for errors 
          if($qmail < 0) 
          { 
          // Error, redirect 
          header("Location: login.php?e=2"); 
          break; 
          } 
          else if($qmail["user_email"] == "") 
          { 
          // User does not exist 
          header("Location: login.php?e=3"); 
          break; 
          } 
     
          // Check for match 
          if(strcmp($password,$qmail["user_password"]) == 0) 
          { 
          // All good, start session, redirect 
          if( (Session::start($qmail["id"],$qmail["user_name"])) == 0) 
          { 
     
     
              // PROBLEME ICI, MEME UNE VARIABLE DU TYPE
    	// $_SESSION['test'] = "test"; n'est pas retrouvé dans cpanel.php
    	// donc le pb se situe dans le header ci dessous non ?
     
              header("Location: cpanel/cpanel.php"); 
              break; 
     
     
     
          } 
          else 
          { 
              // Error setting session 
              header("Location: login.php?e=5"); 
              break; 
          } 
     
          } 
          else 
          { 
          // Password error - incorrect password 
          header("Location: login.php?e=4"); 
          break; 
     
          } 
     
          } 
          catch(Exception $e) 
          { 
          header("Location: login.php?e=6"); 
          break; 
          } 
     
     
     
    } 
    else 
    { 
         // Redirect to home page, as this page should not be accessed unless post session 
         header("Location: login.php"); 
         break; 
    } 
     
    ob_end_flush(); 
     
     
    ?>

    Merci d'avance !!

  2. #2
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 334
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 334
    Billets dans le blog
    17
    Par défaut
    Et comment gères-tu tes sessions en interne ?
    Si tu ne passes pas par les cookies il faut aussi transmettre dans l'URL du header( ) le nom de la session et son identifiant.

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 13
    Par défaut
    Euh je ne sais pas... Je ne gere pas les sessions, j'utilise simplement les variables sessions directement... Mais en regardant les cookies dans chrome il y a bien un cookie "dif" qui a été crée.

    De plus, j'ai verifié les session_id() et ils correspondent bien...

  4. #4
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 334
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 334
    Billets dans le blog
    17
    Par défaut
    Citation Envoyé par Ethan0026 Voir le message
    Euh je ne sais pas... Je ne gere pas les sessions, j'utilise simplement les variables sessions directement...
    Dans ce cas à quoi sert la classe que tu as crée pour gérer les sessions ?

    Mais en regardant les cookies dans chrome il y a bien un cookie "dif" qui a été crée.
    S'il y a un cookie alors tu ne devrais pas avoir besoin de transmettre le name et le id par URL.
    Est-ce que tu donnes le même name à ta session sur toutes les pages ?

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 13
    Par défaut
    La class sert juste a injecter des "salt" pour sécuriser les connections
    Le problème ne se situe normalement pas a cet endroit...

    Oui toutes les pages commencent par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <?php 
    session_name('dif'); 
    session_start(); 
    ob_start();
    Je ne comprend vraiment pas...

  6. #6
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 334
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 334
    Billets dans le blog
    17
    Par défaut
    Donne ta classe qu'on puisse tester par nous-même

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Perte de variable Session à l'ouverture d'un popup
    Par jiddou dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 23/04/2009, 11h51
  2. Perte de valeur des variables session avec header
    Par Norhan05 dans le forum Langage
    Réponses: 11
    Dernier message: 31/03/2009, 16h05
  3. variable session dans header en include
    Par hpl76 dans le forum Servlets/JSP
    Réponses: 9
    Dernier message: 16/09/2008, 14h44
  4. Réponses: 9
    Dernier message: 02/09/2007, 21h39
  5. Perte de variables session avec IE6.0.28
    Par tom42 dans le forum Langage
    Réponses: 1
    Dernier message: 12/03/2007, 17h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo