[PHP] Perte des variables Session_start
Répondre à la discussion
Affichage des résultats 1 à 6 sur 6

[PHP] Perte des variables Session_start



  1. #1
    olivier147

    [PHP] Perte des variables Session_start


    ------

    Bonjour à tous,

    Je suis dans l'impasse, je ne parviens pas à utiliser mes variables de session_start

    J'ai un premier fichier connect.php qui me permet de gérer la partie identification et de créer une session_start

    (include("config2.php"); me permet de récupérer mes accés serveur)

    Code PHP:

    <?php
    // on se connecte à MySQL 
    include("config2.php");

    if(isset(
    $_POST) && !empty($_POST['login']) && !empty($_POST['password'])) {
    $_POST['password'] = $_POST['password'];
    $login=$_POST['login'];
      
    extract($_POST);
      
    // on recupére le password de la table qui correspond au login du visiteur
      
    $sql "select password from table_utilisateur where login='".$login."'";
      
    $req mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());

      
    $data mysql_fetch_assoc($req);

      if(
    $data['password'] != $password) {
        echo 
    '<div class="alert alert-dismissable alert-danger">
      <button type="button" class="close" data-dismiss="alert">x</button>
      <strong>Oh Non !</strong> Mauvais login / password. Merci de recommencer !
    </div>'
    ;
      }
      
      else {
        
    session_start();
        
    $_SESSION['login'] = $login;
        
        
        
        echo 
    '<div class="alert alert-dismissable alert-success">
      <button type="button" class="close" data-dismiss="alert">×</button>
      <strong>Yes !</strong> Vous etes bien logué, Redirection dans 5 secondes ! <meta http-equiv="refresh" content="5; URL=dashboard">
    </div>'
    ;



       
    header("Location:Traitement.php"); // redirection si OK
      
    }    
    }
    else {
      
    $champs '<p><b>(Remplissez tous les champs pour vous connectez !)</b></p>';
    }


    ?>
    Le header du premier code me renvoi vers le fichier Traitement.php
    Le code commence bien avec ma session_start

    Code PHP:

    <?php session_start();
    if(!isset(
    $_SESSION['login'])) {
      echo 
    'Vous devez vous identifier';
      include(
    'login.php');
        exit;
      
      
    }

    ?> 

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

    <html>
    .........
    </html>
    L'idée c'est de récupérer ma valeur de 'login' pour interroger ma table et récupérer une autre variable qui se somme 'rang'
    La valeur 'rang' me permettrait de gérer les droits d’accès selon les profils des utilisateurs.

    Ce qui est curieux c'est que lorsque je fais un ECHO du style <?php echo $_SESSION['login'];?>
    La valeur de login s'affiche bien.
    Par contre si je fais quelque chose comme ça: $sql = "select rang from table_utilisateur where login='".$login."'";

    Alors là il me dit que 'login' est une variable inconnue....

    Je ne comprends plus rien...

    Avez-vous une idée de problème??

    Merci d'avance

    -----

  2. #2
    sandrecarpe

    Re : [PHP] Perte des variables Session_start

    Salut,
    A quoi ça sert ?
    $_POST['password'] = $_POST['password'];

    Surement un problème de concaténation de ta chaine

    $sql = "select password from table_utilisateur where login='".$login."'";
    T'es sur que t'as besoin de tes guillemets ? (")
    Désolé, le php ça date...

  3. #3
    olivier147

    Re : [PHP] Perte des variables Session_start

    Salut,

    A vrai dire le
    Code PHP:
    $_POST['password'] = $_POST['password']; 
    j'en sais trop rien...c'est un ligne de code que j'ai trouvé

    Pour le
    Code PHP:
    $sql "select password from table_utilisateur where login='".$login."'"
    plus rien ne marche si j'enlève les guillemets

  4. #4
    olivier147

    Re : [PHP] Perte des variables Session_start

    Pour info la fonction
    Code PHP:
    print_r($_SESSION); 
    Affiche bien ma variable 'login'

  5. A voir en vidéo sur Futura
  6. #5
    cherbe

    Re : [PHP] Perte des variables Session_start

    essaie :
    echo $sql;
    Que l'on regarde son contenu.

  7. #6
    quentin08

    Re : [PHP] Perte des variables Session_start

    Salut,

    Le session_start(), il faut le placer avant l'endroit où le script commence à faire des affichages, le mieux est de le placer tout en haut.
    Et il faut le mettre sur chaque script où tu compte utiliser les sessions.
    Pour t'aider à débugger :

    Code PHP:
    var_dump($_SESSION); 
    Affiche un dump de la variable $_SESSION (de type tableau) qui contient tout ce qui est stocké en session

    Même remarque pour le header() -> A placer avant les echo ou fonctions qui génèrent de l'affichage. Même si php tolère ça aujourd'hui, il ne faut pas le faire. La fonction header() sert à envoyer des entêtes, il est donc normal de le placer avant tout code qui affiche du texte.

    Donc :

    1 - Appel de session_start()
    2 - Prépare un code qui teste le login mais qui ne fait aucun affichage
    3 - Si login OK -> header() vers une page, Si KO, vers une autre page
    4 - Appel à exit() : Si tu changes de page par une redirection, il n'est pas nécessaire que le reste s’exécute (à faire selon la conception du script)

    Aussi, attention à ce que tu mets dans tes includes
    Exemple :

    Code PHP:
    <?php
    session_start
    ();
    include(
    "test.php");

    // Suite du script
    ?>
    Si le fichier test.php contient des retours à la ligne avant l'ouverture ou après la fermeture de son tag php, c'est considéré comme de l'affichage
    Si tu tiens vraiment à faire une redirection après que du texte ai été affiché, tu peut toujours faire une redirection JavaScript

    Aussi, require() est plus sécurisé que include() car il se plante en erreur fatale si le fichier n'est pas trouvé, il fait juste un warning avec include()

    A+
    Maximator c'est comme Actimel : ça agit à l'intérieur et ça se voit à l'extérieur

Discussions similaires

  1. Variables libres (parlantes) ou variables liées (muettes)
    Par Perfectina dans le forum Mathématiques du supérieur
    Réponses: 5
    Dernier message: 15/12/2014, 14h13
  2. Qui saurait me préciser la différence entre perte de conscience et perte de conaissance?
    Par dark_globule dans le forum Santé et médecine générale
    Réponses: 2
    Dernier message: 09/11/2012, 17h21
  3. Réponses: 19
    Dernier message: 26/07/2009, 11h54
  4. XSL et variables GET
    Par technosvitman dans le forum Internet - Réseau - Sécurité générale
    Réponses: 1
    Dernier message: 10/06/2009, 09h19
  5. Influence des variables d'une fonction à 2 variables
    Par invitee2a62e92 dans le forum Mathématiques du supérieur
    Réponses: 2
    Dernier message: 18/07/2008, 01h54