Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2429 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  [Résolu] Affichage de la déconnexion d'un utilisateur

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Résolu] Affichage de la déconnexion d'un utilisateur

n°1719899
akalaan
Posté le 18-04-2008 à 14:34:59  profilanswer
 

Bonjour à tous,
 
Je suis à la recherche du moyen pour afficher les déconnexion d'utilisateur par fermeture de navigateur.
 
J'ai une page ou lorsque le user arrive, une session est créée, le session_id est sauvegardé dans une bd MySQL.
Lorsque le user clique sur déconnexion, l'enregistrement correspondant dans la bd est supprimé et sa session est détruite.
 
Mais comme tous le monde sait, les user trouve beaucoup plus pratique de fermer le navigateur directement.
Effectivement, lorsque le user ouvre à nouveau le navigateur et va sur la page, une nouvelle session lui est créée.
 
Mais le problème c'est que j'ai toujours l'existence d'une session dans ma table.  
 
Je voudrais savoir si il existe une méthode pour que je puisse supprimer l'enregistrement.
 
Autre question, j'ai beau configurer mon php.ini en mettant le session.gc_probability et session.gc_divisor à 100, les fichiers de session ne sont pas supprimés.
 
Merci d'avance
 
Cordialement,


Message édité par akalaan le 21-04-2008 à 18:20:19
mood
Publicité
Posté le 18-04-2008 à 14:34:59  profilanswer
 

n°1719924
masterpsx
Aigloun foutougrafe
Posté le 18-04-2008 à 14:59:54  profilanswer
 

Si tes sessions sont dans une table et donc stockés dans ta base de données, tu n'as qu'a rajouter un champ date pour la validité de ta session.  
 
Tu rajoutes ensuite une requétes pour supprimer les sessions qui ne sont plus valide (a chaque nouvelle connexion par exemple), après tu as le choix d'être précis ou pas, c'est a dire de faire durée ta session 24H ou de faire un systéme avec un temps d'inactivité (5 minutes par exemple) qui met fin à la sessions (ca t'oblige a mettre a jour ta table a chaque chargement de page).

n°1721194
akalaan
Posté le 21-04-2008 à 17:35:49  profilanswer
 

Merci de m'avoir répondu,
 
Je vais effectivement faire comme tu as dit.
 
Je vais faire une requête supprimant les enregistrement supérieur à 5mn.
 
Or je voudrait comparer la date récupérer en php par $date = date("Y-m-d H:i:s", time()) - le champ date de ma table qui est au format datetime et si > à 5mn alors on supprime
 
Comment dois je m'y prendre .
 
Merci d'avance,

n°1721204
Melendril
Posté le 21-04-2008 à 17:48:58  profilanswer
 

Salut
 
Avec la fonction mktime, tu seras en mesure de générer deux dates pour les utiliser dans ta requête :
 
http://fr.php.net/manual/fr/function.mktime.php
 
Ceci dit, 5mn, c'est un peu court, surtout que d'après ce que j'ai compris, tu fais juste l'enregistrement, et pas d'update.

n°1721217
akalaan
Posté le 21-04-2008 à 18:11:02  profilanswer
 

Effectivement 5mn c'est court, mais la page ne nécessite pas plus de 20s pour regarder ce qu'il y a à voir.
 
Voici ce que j'ai fait finalement pour supprimer au bout de 5mn.

Code :
  1. <?php
  2. function convert_datetime($str) {
  3. list($date, $time) = explode(' ', $str);
  4. list($year, $month, $day) = explode('-', $date);
  5. list($hour, $minute, $second) = explode(':', $time);
  6. $timestamp = mktime($hour, $minute, $second, $month, $day, $year);
  7. return $timestamp;
  8. }
  9. $Date = date("Y-m-d H:i:s", time());
  10. $connect = mysql_connect(localhost,user,passwd) or die ("Connexion impossible au serveur : ".mysql_error());
  11. $select_db = mysql_select_db(intranet,$connect) or die ("Connexion impossible à la base : ".$intra_database." ".mysql_error());
  12. $intra_query = "SELECT * from CurConnexion";
  13. $res = mysql_query($intra_query) or die ("Requete impossible : ".mysql_error());
  14. $i=0;
  15. while ($row = mysql_fetch_array($res)){
  16.  //echo convert_datetime($Date)-convert_datetime($row['date'])."<br/>";
  17.  if ((convert_datetime($Date)-convert_datetime($row['date'])) > 300 ){
  18.   $dateConnect = $row['date'];
  19.   $sup = "DELETE from CurConnexion where date = '$dateConnect'";
  20.   mysql_query($sup) or die ("Requete impossible : ".mysql_error());
  21.   $i++;
  22.  }
  23. }
  24. echo "Il y a ".$i." enregistrement superieur a 5mn";
  25. ?>

n°1721231
masterpsx
Aigloun foutougrafe
Posté le 21-04-2008 à 18:37:10  profilanswer
 

Tu aurais pu faire plus simple en stockant la date de fin de session dans la table, il suffisait d'enregistrer lors de l'ouverture de la session, la date au format timestamp en y rajoutant le délai ex : time() + 300, ensuite une simple requéte du genre suffit :  

Code :
  1. $sup = mysql_query("DELETE FROM CurConnexion WHERE date < '" . time() . "'" );


Naturellement il ne faut pas oublier de mettre la session a jour a chaque chargement de page en rajoutant 300 au champs date sinon le visiteur sera déconnecté

Code :
  1. $upd = mysql_query("UPDATE CurConnexion SET date = date + 300 WHERE id = '" . $id . "'" );


n°1721494
akalaan
Posté le 22-04-2008 à 10:37:17  profilanswer
 

Effectivement cela aurait été peut être plus simple
Je vais voir ce que je vais faire, mais en tout cas, merci pour tes réponses et attend toi à me revoir.
 
Cordialement,


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  [Résolu] Affichage de la déconnexion d'un utilisateur

 

Sujets relatifs
[Résolu] Recherche avancée dans un arrayAffichage Frame sur internet Explorer
[Résolu] Incorrect password avec Bookmark4U / php[Résolu]preg_match
[Résolu] Pb classe javascript[résolu] CSS-HTML - texte surligné !???
[Résolu] Problème de récupérationproblème d'affichage du format de la date (AAAA-MM-JJ)
[RESOLU][MYSQL] variable dans procédure stockée toujours NULL 
Plus de sujets relatifs à : [Résolu] Affichage de la déconnexion d'un utilisateur


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)