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 :

Session et deconnexion propre


Sujet :

Langage PHP

  1. #1
    Membre averti Avatar de rems033
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    513
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2007
    Messages : 513
    Points : 345
    Points
    345
    Par défaut Session et deconnexion propre
    Bonjour à tous.

    J'ai crée un accueil (HOME/index.php) sur lequel le visiteur doit absolument se logger pour accéder à la suite du site (HOME/site1/index.php).
    J'ai donc interfacé tout ceci avec des sessions.
    La création des sessions et des variables se fait nickel
    Cependant, lors de la déconnexion, j'ai un souci :
    - L'utilisateur clique sur "Déconnexion" (script logout.php);
    - Lorsque je tape dans le navigateur juste après déconnexion l'URL HOME/site1/index.php, le navigateur reconnaît la session précédemment ouverte.

    Je souhaiterai completement détruire la session créée et ainsi obliger le visiteur à réentrer son login/mdp.

    Je ne vois pas comment faire ceci proprement
    Voici le code de logout.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
     
    <?php
     // On appelle la session
     session_start();
     
     $_SESSION['login'] = "";
     $_SESSION['id_site'] = "";
     $_SESSION['id_user'] = "";
     $_SESSION['role'] = "";
     $_SESSION['timeout']="";
     
     // On écrase le tableau de session
     $_SESSION = array();
     
     if (isset($_COOKIE[session_name()])) 
     { 
      setcookie(session_name(), '', time()-42000, '/');
     }
     
     // suppression des variables de sessions
     session_unset(); 
     // On détruit la session
     session_destroy();
     
     header("Location: ../index.php?logout=ok");
     exit();
    ?>
    Je vous remercie pour votre aide

  2. #2
    Membre actif Avatar de juliens9
    Profil pro
    Développeur Web
    Inscrit en
    Mars 2007
    Messages
    192
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2007
    Messages : 192
    Points : 237
    Points
    237
    Par défaut
    Essaye de détruire tes variables de sessions avec la fonction :

    session_unregister()

  3. #3
    Membre averti Avatar de rems033
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    513
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2007
    Messages : 513
    Points : 345
    Points
    345
    Par défaut
    ca marche pas non plus !

    Je sais plus koi ajouter la maintenant !
    Ca viendrai pas d'un paramétrage de php.ini ?

  4. #4
    Membre actif Avatar de juliens9
    Profil pro
    Développeur Web
    Inscrit en
    Mars 2007
    Messages
    192
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2007
    Messages : 192
    Points : 237
    Points
    237
    Par défaut
    c'est possible oui,

    peut tu afficher comment tu teste si la session est créer ?

    Et afficher aussi le contenu relatif aux sessions de ton php_ini, et surtout si ton session_autostart est a true .

  5. #5
    Membre averti Avatar de rems033
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    513
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2007
    Messages : 513
    Points : 345
    Points
    345
    Par défaut
    Voici le bout de code de vérification de session :
    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
     
    session_cache_limiter('private'); /* Configure le limiteur de cache à 'private' */
    $cache_limiter = session_cache_limiter(); 
    session_cache_expire (1);  /* Configure le délai d'expiration à 30 minutes */
    $cache_expire = session_cache_expire();  
    session_start();  /* Démarre la session */
    // test si la session est toujours valide
    if((time() - $_SESSION['timeout']) > 60) // 1200 secondes = 20 min
    {
     session_destroy();
     header('Location: ../index.php?error=4'); 
        exit; 
    }
    // test si la session a été ouverte
    if(!session_is_registered('id_user')) 
    { 
       header('Location: ../index.php?error=3'); 
       exit; 
    }
    Quant au php.ini, c'est la configuration de base avec EasyPHP

    Merci pour ton aide

  6. #6
    Membre actif Avatar de juliens9
    Profil pro
    Développeur Web
    Inscrit en
    Mars 2007
    Messages
    192
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2007
    Messages : 192
    Points : 237
    Points
    237
    Par défaut
    N'utilisant pas easyphp, je ne sait pas quelle est la configuration de bases.

    Sinon pour ta session essaye plutot de passer par un isset($_SESSION['id_user']), plus adapté a ton fichier logout.

    Regarde quand meme ton session_autostart de ton php, et met le a false ( je crois qu'il est a true par défaut sur pas mal de serveur)

  7. #7
    Membre averti Avatar de rems033
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    513
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2007
    Messages : 513
    Points : 345
    Points
    345
    Par défaut
    aucune occurence de session_autostart dans le php.ini.
    Est-ce bien dans ce fichier ? Dois-je le rajouter en fin de fichier ?

  8. #8
    Membre averti Avatar de rems033
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    513
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2007
    Messages : 513
    Points : 345
    Points
    345
    Par défaut
    je modifie, il se trouve sous la dénomination session.auto_start et vaut 0 donc false si je ne m'abuse!

  9. #9
    Membre actif Avatar de juliens9
    Profil pro
    Développeur Web
    Inscrit en
    Mars 2007
    Messages
    192
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2007
    Messages : 192
    Points : 237
    Points
    237
    Par défaut
    Oui c'est ca, essaye de le passer a 1, on sait jamais...

  10. #10
    Membre averti Avatar de rems033
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    513
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2007
    Messages : 513
    Points : 345
    Points
    345
    Par défaut
    il me met ce code d'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Notice: A session had already been started - ignoring session_start() in C:\Program Files\EasyPHP 2.0b1\www\Myotis\site1\index.php on line 6
    Mais par contre, la fermeture de session se fait nickel !
    Merci encore

    PS : Pour éviter les "notice" faut-il mettre un @ devant?

  11. #11
    Membre actif Avatar de juliens9
    Profil pro
    Développeur Web
    Inscrit en
    Mars 2007
    Messages
    192
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2007
    Messages : 192
    Points : 237
    Points
    237
    Par défaut
    Oui, normalement le @ fait l'affaire, ou sinon tu as une option a configurer sur ton serveur.

  12. #12
    Membre averti Avatar de rems033
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    513
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2007
    Messages : 513
    Points : 345
    Points
    345
    Par défaut
    le @ ne suffit pas

    tu saurais pas à tout hasard ou se trouve cette configuration ?

  13. #13
    Membre averti Avatar de rems033
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    513
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2007
    Messages : 513
    Points : 345
    Points
    345
    Par défaut
    C'est bon, j'ai trouvé.
    C'est au niveau de error_reporting = E_ALL & ~E_NOTICE

    Merci pour ton aide précieuse

  14. #14
    Membre actif Avatar de juliens9
    Profil pro
    Développeur Web
    Inscrit en
    Mars 2007
    Messages
    192
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2007
    Messages : 192
    Points : 237
    Points
    237
    Par défaut
    Oui c'est ce champ la, qui te permet de géré les rapport d'erreur et de warning.

    Pas de problème pour l'aide, le forum est la pour ca... puis entre rhonalpins c'est toujours un plaisir..

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

Discussions similaires

  1. detruire session deconnexion
    Par debutantasp dans le forum ASP
    Réponses: 11
    Dernier message: 06/05/2008, 16h41
  2. executer un script juste avant la deconnexion d'une session
    Par medora dans le forum Administration système
    Réponses: 8
    Dernier message: 20/04/2007, 13h19
  3. Réponses: 40
    Dernier message: 13/05/2006, 00h04
  4. [Sécurité] Déconnexion de session
    Par zoreil dans le forum Langage
    Réponses: 10
    Dernier message: 10/05/2006, 08h59
  5. Réponses: 3
    Dernier message: 01/05/2006, 14h09

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