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 :

Vérifier l'existance d'une session


Sujet :

Langage PHP

  1. #1
    Membre averti
    Homme Profil pro
    Professeur
    Inscrit en
    Octobre 2002
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Professeur

    Informations forums :
    Inscription : Octobre 2002
    Messages : 14
    Par défaut Vérifier l'existance d'une session
    Bonjour

    J'ai un fichier authcheck.php qui vérifie si les paramètres de ma session sont présents. Depuis quelques jours, après quelques manipulations ça ne fonctionne plus. J'essais de trouver ou est l'erreur que j'ai commis et je ni arrive pas.

    Voici le processus.

    Chaque ficher de mon site à le code suivant après l'entête
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <?php 
    include "auth-config.php";
    include "authcheck.php";
     
    ?>
    Le code du fichier auth-config.php est le suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <?php
    $session_timeout=820;
    ?>
    Le code du fichier authcheck.php est le suivant :
    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
     
    <?php
    if(!isset($_SESSION['last_access']) || !isset($_SESSION['ipaddr']) || !isset($_SESSION['user']))
    {
      header("Location: https://www.domaine.net/login.php");
      die();
    }
     
    if(time()-$_SESSION['last_access']>$session_timeout)
    {
      unset($_SESSION['last_access']);
      unset($_SESSION['user']);
      unset($_SESSION['ipaddr']);
      unset($_SESSION['repertoire']);
      header("Location: https://www.domaine.net/login.php");
      die();
    }
    if($_SERVER['REMOTE_ADDR']!=$_SESSION['ipaddr'])
    {
      unset($_SESSION['last_access']);
      unset($_SESSION['user']);
      unset($_SESSION['ipaddr']);
      unset($_SESSION['repertoire']);
      header("Location: https://www.domaine.net/login.php");
      die();
    }
    $_SESSION['last_access']=time();
    ?>
    Si j'accède directement au fichier https://www.domaine.net/login.php tout fonctionne bien, et ma session est ouverte.
    Avec le code suivant dans le fichier
    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
    <?php
    function CheckUser($login,$md5)
    {
    $database_localhost = "gestion";
    $username_localhost = "user";
    $password_localhost = "pass";
     
    $localhost = mysql_pconnect($hostname_localhost, $username_localhost, $password_localhost) or trigger_error(mysql_error(),E_USER_ERROR); 
    mysql_select_db($database_localhost, $localhost);
     
    $sql = "SELECT * from tbl_connexions WHERE pseudo = '$login' AND pass = '$md5' ";
    $resultat = mysql_db_query($database_localhost,$sql);
    $nombre = @mysql_num_rows($resultat);
     
    if (!$nombre || $nombre <> '1'){
    return false;
     
    }
    return true;
     
    }
    ?>
    <?php
    if(!isset($_POST['md5']))
    {
      header("Location: https://www.domaine.net/login.php");
      die();
    }
    $md5=$_POST['md5'];
     
    if(!isset($_POST['login']))
    {
      header("Location: https://www.domaine.net/login.php");
      die();
    }
    $login=$_POST['login'];
     
    if(!CheckUser($login,$md5))
    {
       header("Location: https://www.domaine.net/login.php");
      die();
    }
    session_start();
    $_SESSION['last_access']=time();
    $_SESSION['ipaddr']=$_SERVER['REMOTE_ADDR'];
    $_SESSION['user']=$login;
    header("Location: index.php");
    ?>
    Mais dès que j'accède à https://www.domaine.net/ je tombe sur une page blanche avec seulement ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
    Tout mes test me laisse croire que mon problème est dans mon fichier authcheck.php car si dans le premier if je mets un echo bye a la place du
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    header("Location: https://www.domaine.net/login.php");
      die();
    ...je reçois une page avec bye écrit.

    Merci de votre aide,

    Jean-Pierre

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    691
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 691
    Par défaut
    je sais pas si c'est ca mais :

    session_start();

    doit toujours etre en toute premiere ligne de ton fichier quelqu'il soit

    Mais dans la partie apres ceci
    Si j'accède directement au fichier https://www.domaine.net/login.php tout fonctionne bien, et ma session est ouverte.
    Avec le code suivant dans le fichier
    c'est pas le cas

  3. #3
    Membre averti
    Homme Profil pro
    Professeur
    Inscrit en
    Octobre 2002
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Professeur

    Informations forums :
    Inscription : Octobre 2002
    Messages : 14
    Par défaut
    J'ai ajouté le un session_start();
    dans mon fichier authcheck.php et tous fonctionne, bizarre je trouve !

    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
    <?php
    session_start();
     
    if(!isset($_SESSION['last_access']) || !isset($_SESSION['ipaddr']) || !isset($_SESSION['user']))
    {
      header("Location: https://www.domaine.net/login.php");
      die();
    }
     
    if(time()-$_SESSION['last_access']>$session_timeout)
    {
      unset($_SESSION['last_access']);
      unset($_SESSION['user']);
      unset($_SESSION['ipaddr']);
      unset($_SESSION['repertoire']);
      header("Location: https://www.domaine.net/login.php");
      die();
    }
    if($_SERVER['REMOTE_ADDR']!=$_SESSION['ipaddr'])
    {
      unset($_SESSION['last_access']);
      unset($_SESSION['user']);
      unset($_SESSION['ipaddr']);
      unset($_SESSION['repertoire']);
      header("Location: https://www.domaine.net/login.php");
      die();
    }
     
    $_SESSION['last_access']=time();
    ?>
    Pourtant la session devait être ouverte par mon fichier auth.php sinon il redirigerais vers login.php....

    Bon je ne comprend pas mais le problème est réglé.

    Merci
    Jean-Pierre

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    691
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 691
    Par défaut
    Pour avoir des sessions a chaque page faut le mettre en toute premiere ligne et dans toutes les pages ou il y a des sessions.

    si pas de sessionstart pas de transmission de session et tu perds tout

    Il n'y a absolument rien de bizzard c'est comme ca que ca fonctionne et c'est dans la doc

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

Discussions similaires

  1. Vérifier l'existence d'une valeur?
    Par ashen dans le forum Access
    Réponses: 8
    Dernier message: 19/05/2006, 17h10
  2. Réponses: 4
    Dernier message: 03/05/2006, 13h58
  3. Vérifier l'existence d'une table SQL
    Par rock_thunder159 dans le forum C++Builder
    Réponses: 5
    Dernier message: 16/02/2006, 13h41
  4. vérifier l'existance d'une table dans une base de donnée
    Par zidenne dans le forum Bases de données
    Réponses: 1
    Dernier message: 31/10/2005, 11h39
  5. Réponses: 3
    Dernier message: 05/04/2005, 14h36

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