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

Apache Discussion :

.htaccess avec une durée de session ?


Sujet :

Apache

  1. #41
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2009
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 40
    Points : 11
    Points
    11
    Par défaut
    J'ai ajouté ça dans l'include :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ini_set('session.save_path', 'monrep');
    J'ai créé un répertoire monrep au même niveau que mes fichiers protégés, il a les droits 705.

    Je viens de m'appercevoir que le dossier comporte par moment un fichier vide qui s'appelle : sess_suivi d'une longue chaine de caractères

    Dans le phpinfo, session.save_path est toujours à /tmp.
    Et pour les autres paramètres
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    session.gc_divisor 100 100 
    session.gc_maxlifetime 1440 1440 
    session.gc_probability 100 0
    Maintenant, je n'arrive plus à me loger : je tape mon id/psw, la page se réaffiche avec les champs vides.
    Si je retire la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ini_set('session.save_path', 'monrep');
    ...alors, je peux à nouveau me loguer.

    Pour tester l'expiration de mes sessions, je lance IE, je vais sur mon site, je m'indentifie sur la page de login, je laisse le navigateur inactif pendant 1mn ou 24mn selon, passé ce délai j'essaye d'actualiser la page.
    Hier, quand je pensais que ça marchait, une fois la session terminée, IE me renvoyait sur la page de login quand je tentais d'actualiser la page.

  2. #42
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 778
    Points
    17 778
    Par défaut
    Pour l'usage d'un répertoire de session propre, il devrait y avoir une erreur si ça ne fonctionne pas (à moins que l'affichage de celles-ci ne soient désactivées) : chemin incorrect (tenter un chemin absolu) ou de droits notamment.

    Quant à vos essais, comme je l'ai encore expliqué plusieurs fois, étant le seul à tester, vous pourriez ne pas voir l'expiration de la session parce que c'est vous qui lanceriez l'appel au GC. Et lors de celui-ci, cette vérification pouvant être effectuée après, et non avant, votre propre session ne s'en retrouve pas concernée. Il faudrait au moins deux clients (et regarder les données de la session ; non l'identifiant qui restera le même).

    A noter, étant donné que vous êtes sur du mutualisé, votre prestataire a pu agir sur le fonctionnement de cette fonctionnalité et/ou mettre en place une autre solution (il avait probablement une raison de vouloir la désactiver totalement). Si besoin, il faudra le lui poser la question.

    Vous pouvez aussi gérer cela vous-même, moyennant quelques lignes supplémentaires, vous serez ainsi plus indépendant et cette méthode sera probablement plus fiable dans votre cas.

    Par exemple :
    Code PHP : 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
    <?php
    define('SESSION_MAXLIFETIME', 60); # Expiration de la session après inactivité (en secondes)
     
    session_start();
    if (isset($_SESSION['login']) && isset($_SESSION['last_activity'])) {
        if (time() - $_SESSION['last_activity'] > SESSION_MAXLIFETIME) {
            $_SESSION = array();
            //session_destroy();
            session_regenerate_id(TRUE);
            header('Location: ../login.php');
            exit;
        } else {
            $_SESSION['last_activity'] = time();
        }
    } else {
        header('Location: ../login.php');
        exit;
    }
    (non testé)

    Et il faudra ajouter :
    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    $_SESSION['last_activity'] = time();
    Au script de création de la session, une fois identifié.

  3. #43
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2009
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 40
    Points : 11
    Points
    11
    Par défaut
    Pour le path vers mon répertoire de session, si je modifie la ligne par exemple comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ini_set('session.save_path', 'xxxxxxxxxxxx');
    j'ai bien des messages erreur (Warning...) Sinon, pas de message.

    En revanche, je peux créer autant de users que je veux pour vérifier le fonctionnement des sessions, j'en essai toujours 2 différents.

    ...Mais tant que j'ai cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ini_set('session.save_path', 'monrep');
    je ne peux même plus me loguer, quelque soit l'identifiant que j'utilise...

    Je ne m'explique pas cette complexité pour mettre en place une simple durée de session... je craque

  4. #44
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2009
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 40
    Points : 11
    Points
    11
    Par défaut
    Merci beaucoup, je mets la première partie du code ou ? Remplace-il celui-ci, mon include actuel que j'appelle sur toutes mes pages ) :

    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?php
    ini_set('session.gc_maxlifetime', 60);
    ini_set('session.gc_divisor', '100');
    ini_set('session.gc_probability', '100');
    //ini_set('session.save_path', 'monrep');
    session_start();
    if (!isset($_SESSION['login'])) {
    	header ('Location: ../login.php');
    	exit();
    }
    ?>

    Et celui-ci il faut le mettre ou :
    Et il faudra ajouter :
    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    $_SESSION['last_activity'] = time();
    Au script de création de la session, une fois identifié.
    Merci

  5. #45
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 778
    Points
    17 778
    Par défaut
    Le premier, oui, remplacerait (entièrement) votre inclusion actuelle.

    Le second serait à placer après la ligne :
    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    $_SESSION['login'] = $_POST['login'];

  6. #46
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2009
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 40
    Points : 11
    Points
    11
    Par défaut Genial !
    Merci julp !
    Ca fonctionne nickel chrome !
    Je tiens à vous remercier chaleureusement pour votre disponibilité et votre patience.
    Si je peux vous être utile en retour, ce sera avec un grand plaisir.
    Très sincèrement.
    Merci aussi à _mac_ pour sa participation

+ Répondre à la discussion
Cette discussion est résolue.
Page 3 sur 3 PremièrePremière 123

Discussions similaires

  1. Réponses: 2
    Dernier message: 09/12/2011, 20h33
  2. Créer une popup seule, avec une durée de vie dans le temps
    Par echantillon dans le forum GTK+ avec C & C++
    Réponses: 5
    Dernier message: 16/02/2011, 20h39
  3. option de configurer une durée de session dans php
    Par Aquaa dans le forum Langage
    Réponses: 7
    Dernier message: 17/03/2010, 14h29
  4. Comment prévoir une durée de session avec htaccess ?
    Par PierreR75 dans le forum Sécurité
    Réponses: 2
    Dernier message: 23/12/2009, 09h14
  5. [MySQL] interdire les votes toutes les 5 minutes avec une variable de session
    Par mademoizel dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 18/03/2008, 10h40

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