8722 sujets

Développement web côté serveur, CMS

Bonjour,

Alors voilà, je suis en train de développer une interface php qui a plusieurs niveaux d'utilisateurs. Ceux si viennent se logger via le même formulaire, une fois l'authentification approuvée le type d'utilisateur est vérifié et la session créée avec les variables de sessions propres à chaque type d'utilisateur. Enfin pour finir l'utilisateur est redirigé.
Ce que je souhaiterais c'est pouvoir attribué un timeout de session plus ou moins long en fonction du type d'utilisateur.
Par exemple pour le type 1 le timeout serait de 15 min et pour le type 2 de 1h.
Cela pour la simple raison que cette interface va servir dans nos bureaux pour les utilisateurs de types 2 qui seront connectés dessus toute la journée. Si je peux leur éviter de devoir se reconnecter à chaque fois qu'une période d’inactivité de 10 minutes est détectée....
Et vu que les utilisateurs de types 1 se connecteront depuis l'extérieur que se soit sur un ordi public ou privé je ne peux me permettre de leur laisser une période d’inactivité trop élevée....

J'ai beau chercher à droite à gauche je ne vois pas trop comment faire....
Je ne sais pas si tu peux modifier cette valeur après avoir fait un session_start. Fait le test, tu sera fixé.
Oui je vais essayé d'abord de passer l'argument avant mon session start je verrais bien ce que ça donne. Merci
Je viens de vérifier, il n'est pas possible de modifier les directives de configuration des sessions après session_start().
Tu ne pourras donc pas utiliser maxlifetime, puisqu'il te faut accéder aux sessions pour connaitre l'utilisateur...

Je crois qu'il va falloir que tu utilise un gestionnaire personnalisé de session. Mais, je vais pas pouvoir t'aider Smiley langue
Modérateur
Ouias j'ai regardé aussi et fait joujou avec session.save_path mais pour utiliser une même appli, le problème perdure de toute façon.

Par contre on peut faire "à la bricole" de façon somme toute assez simple sans réinventer un gestionnaire de session, en incluant un truc du genre dans sa construction de page:


<?php

session_start();
// si ma session existe
if (isset($_SESSION['user']) {
   $delta = time()-$_SESSION['last_visit'];
   
   if ($delta > 900 && {vérification du type d’utilisateur} ) {
      // je détruit la session et te rediriges gniark
   }
   
   //on met à jour
   $_SESSION['last_visit'] = time();
}
else {
   // redirect
}


il faut bien entendu que le maxtime corresponde à la session la plus longue, et pour chaque plus courte tu peux les détruire manuellement.
Modifié par kustolovic (04 Jun 2013 - 21:40)
Pas mal tout ça, je regarde ça demain car là je ne suis pas au boulot. Par contre si je vérifie le type d'utilisateur avant de déclarer la session sur la page de verif ça pourrait le faire...