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 :

[Cookies] Session qui continue même quant le navigateur est fermé


Sujet :

Langage PHP

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    412
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 412
    Points : 145
    Points
    145
    Par défaut [Cookies] Session qui continue même quant le navigateur est fermé
    Bonjour,

    j'ai fait un petit site pour une association et à la demande du responsable j'ai mis un cookie qui retient les identifiants , ça fonctionne bien , quant la personne revient il lui faut juste cliquer sur le bouton de login pour s'identifier
    et il est connecté , redirigé vers la page de bienvenue ( avec un message d'accueil personnalisé )

    en haut de la page d'identification

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?php
    if ((((isset($_POST["souviens"]))?$_POST["souviens"]:"") != ""))     {
      setcookie("name", "".((isset($_POST["mail"]))?$_POST["mail"]:"")  ."", time()+(60*60*24*30), "/", "", 0);
    }
    if ((((isset($_POST["souviens"]))?$_POST["souviens"]:"") != ""))     {
      setcookie("password", "".((isset($_POST["passe"]))?$_POST["passe"]:"")  ."", time()+(60*60*24*30), "/", "", 0);
    }
    if ((((isset($_POST["souviens"]))?$_POST["souviens"]:"") != ""))     {
      setcookie("retenir", "1", time()+(60*60*24*30), "/", "", 0);
    }
    session_start();
    ?>
    et le form d'identification

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <form action="" method="post" name="login" id="login">
    <input name="mail" type="text"  value="<?php echo((isset($_COOKIE["name"]))?$_COOKIE["name"]:"") ?>" size="12" />
     
    <input name="passe" type="password"  value="<?php echo((isset($_COOKIE["password"]))?$_COOKIE["password"]:"") ?>" size="12" />
     
    <input type="hidden" name="login" value="1" />
     
    <input name="ok" type="image" src="img/ok.gif">
     
    <input <?php if (!(strcmp(((isset($_POST["souviens"]))?$_POST["souviens"]:""),1))) {echo "checked=\"checked\"";} ?> type="checkbox" name="souviens" id="souviens" />
    c'est pas énorme comme dépense énergétique mais le responsable veut absolument que lorsque l'on s'est identifié , si on ferme le browser et que l'on revient , il ne doit pas avoir besoin de passer par le form d'identification , bref il faudrait que la session est une durée de vie de un mois par exemple même si le browser a été fermé..Je sais que c'est moyen niveau sécurité mais il y tient vraiment
    tant que le browser est ouvert la session est conservé mais après un certain temps elle expire

    ( actuellement dans la config du serveur il y'a session.cache_expire fixé à 180 )

    faut t'il regarder dans la config du php.ini ( serveur dédié ) ou faut il passer par un couple php/mysql

    ou bien y'a t'il moyen de jouer avec le cookie que j'ai installé qui a une durée de 1 mois ( si le cookie vaut tel valeur alors on redirige direct sur la page de bienvenu..)

    merci de votre aide

  2. #2
    Membre habitué
    Avatar de NoobX
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    195
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 195
    Points : 140
    Points
    140
    Par défaut
    Bonjour,

    En regarddant votre code je vois que les cookies servent uniquement a pré-remplir le formulaire de login.

    Et c'est ce point "qui pose probleme" au lieu de pré-remplir le formulaire il serrait plus judicieux de détecter si les cookies nécessaires existe (isset) et le cas echeant de lancer la requête de login sur sql ainsi le simple fait d'afficher la page "loguera" le visiteur, a condition bien entendu qu'il possede le bon couple login/password dans ses cookies.

    Prevoir un affichage de formulaire si le cookie n'est pas bon.


    Petit point concernant les session :
    Permettre des sessions d'un mois est effectivement risqué en matiere de sécurité mais c'est aussi une charge pour le server que de stocker pendant un mois des sessions avec ses propres variables surtout qu'elles ne reserviront peut-etre jamais.
    mais oui c'est bien "session.cache_expire fixé à 180" qui permet de gerer la mise en cache des sessions.

    Bref mauvaise idée ^^

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    412
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 412
    Points : 145
    Points
    145
    Par défaut
    merci pour votre intervention

    j'ai oublié de fournir plus haut dans la page d'identification le script qui redirige selon que l'internaute est loggé ou non soit sur la page de bienvenue soit sur la page avec le message d'erreur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <?php
    user_login($_SERVER['PHP_SELF'] . "?" . $_SERVER['QUERY_STRING']);
    if ( isset($_SESSION['nom']) ) $log =header('Location: bienvenu.php');
     
    else $log=$log =header('Location: nogood.php');
     
    ?>
    ce qui me donne donc

    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
    <?php  // le cookie
    if ((((isset($_POST["souviens"]))?$_POST["souviens"]:"") != ""))     {
      setcookie("name", "".((isset($_POST["mail"]))?$_POST["mail"]:"")  ."", time()+(60*60*24*30), "/", "", 0);
    }
    if ((((isset($_POST["souviens"]))?$_POST["souviens"]:"") != ""))     {
      setcookie("password", "".((isset($_POST["passe"]))?$_POST["passe"]:"")  ."", time()+(60*60*24*30), "/", "", 0);
    }
    if ((((isset($_POST["souviens"]))?$_POST["souviens"]:"") != ""))     {
      setcookie("retenir", "1", time()+(60*60*24*30), "/", "", 0);
    }
    session_start();
    ?>
     
     
    <?php // la gare de triage
    user_login($_SERVER['PHP_SELF'] . "?" . $_SERVER['QUERY_STRING']);
    if ( isset($_SESSION['nom']) ) $log =header('Location: bienvenu.php');
     
    else $log=header('Location: nogood.php');;
    if (isset($javascript) && $javascript != "" ) echo $javascript;
    ?>
    le form d'identification

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
     
    <form action="" method="post" name="login" id="login">
    <input name="mail" type="text"  value="<?php echo((isset($_COOKIE["name"]))?$_COOKIE["name"]:"") ?>" size="12" />
     
    <input name="passe" type="password"  value="<?php echo((isset($_COOKIE["password"]))?$_COOKIE["password"]:"") ?>" size="12" />
     
    <input type="hidden" name="login" value="1" />
     
    <input name="ok" type="image" src="img/ok.gif">
     
    <input <?php if (!(strcmp(((isset($_POST["souviens"]))?$_POST["souviens"]:""),1))) {echo "checked=\"checked\"";} ?> type="checkbox" name="souviens" id="souviens" />

    à quel niveau je peux jouer pour que lorsque le membres a bien coché lors d'une précédente visite la chexbox "retenir mes identifiants" il n'ai pas besoin de recliquer sur le bouton login et que ça redirige sur la page de bienvenue ( tout ça malgré qu'il est fermé son navigateur entre temps !)

    encore merci pour votre aide !

  4. #4
    Membre actif

    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    191
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 191
    Points : 275
    Points
    275
    Par défaut
    hum, alors la question sécurité y a pas pire, stocker login et pass dans un cookie il n'y a pas mieux pour se faire pirater son compte enfin bref.

    donc déjà un petit cours sur les sessions ca peut servire
    http://php.developpez.com/cours/?page=securite#sessions

    ensuite une bonne méthode consiste à placer le sessionid dans un cookie et de le récupérer pour la visite suivante ceci pour une session de lecture uniquement. un exemple ci dessous:

    1.on test si cookie
    si oui on va en 2
    si non on va en 4
    2.on verifie si le sessionid du cookie existe
    si oui on va en 3 en validant le login
    si non on va en 4 en détruisant le cookie
    3.mise a jour de la session
    on détruit le cookie
    on regénère un sessionid
    on memorise la nouvelle session
    on memorise dans un nouveau cookie
    on va en 4
    4.la page d'accueil

    après si l'utilisateur veut modifier un élément de sa session (genre le profile) il est nécessaire de demander une confirmation

    ca se complique sérieusement mais en réfléchissant un peu ca ira.

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    412
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 412
    Points : 145
    Points
    145
    Par défaut
    merci pour vos infos

    finalement je reste sur un script qui pré remplie le formulaire et la personne n'a qu'a cliquer sur le bouton de validation pour être connecté

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

Discussions similaires

  1. [Objective-C] Appli qui continu même en veille
    Par Max29200 dans le forum Objective-C
    Réponses: 0
    Dernier message: 03/02/2015, 13h27
  2. Réponses: 2
    Dernier message: 14/11/2008, 22h37
  3. [Cookies] Session qui n'expire pas comme prévu
    Par zvince dans le forum Langage
    Réponses: 13
    Dernier message: 20/02/2008, 15h27
  4. [Cookies] Sessions qui disparaissent
    Par schnito dans le forum Langage
    Réponses: 31
    Dernier message: 22/12/2006, 11h15
  5. Réponses: 5
    Dernier message: 24/10/2006, 11h56

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