Précédent   Forum des professionnels en informatique > PHP > Langage > Sessions
Sessions Forum d'entraide sur les sessions avec PHP. Avant de poster -> FAQ sessions, Cours sessions et Sources sécurité
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 24/04/2006, 14h43   #1
Membre régulier
 
Inscription : novembre 2005
Messages : 173
Détails du profil
Informations forums :
Inscription : novembre 2005
Messages : 173
Points : 84
Points : 84
Par défaut Fin de sessions en PHP

Bonjour ,

Je cherche à détecter si une personne à quitter mon site au moment ou elle part. Pour détecter les visiteurs j'utilise les sessions. Il est facile de détecter une personne qui se connecte mais une personne qui n'est plus présente je ne vois pas.
Existe-t'il un événement qui indique une fin de session (l'utilisateur quitte le site sans se délogguer, par exemple en fermant le browser) ou quelque chose du genre?

merci de votre aide

a+
FredKéKé est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/04/2006, 15h06   #2
Membre expérimenté
 
Inscription : avril 2006
Messages : 462
Détails du profil
Informations personnelles :
Âge : 33
Localisation : Canada

Informations forums :
Inscription : avril 2006
Messages : 462
Points : 556
Points : 556
Envoyer un message via MSN à rbaatouc Envoyer un message via Skype™ à rbaatouc
quand tu fermes le browser la session est detruite; tu peux aussi autoriser la session pour un laps de temps donné
rbaatouc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/04/2006, 15h09   #3
Membre régulier
 
Inscription : novembre 2005
Messages : 173
Détails du profil
Informations forums :
Inscription : novembre 2005
Messages : 173
Points : 84
Points : 84
Oui mais j'aimerai effacer de ma base de données certaines infos quand la session se détruit.. j'ai donc besoin d'un événement qui enclenche le script.
FredKéKé est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/04/2006, 15h13   #4
Membre expérimenté
 
Inscription : avril 2006
Messages : 462
Détails du profil
Informations personnelles :
Âge : 33
Localisation : Canada

Informations forums :
Inscription : avril 2006
Messages : 462
Points : 556
Points : 556
Envoyer un message via MSN à rbaatouc Envoyer un message via Skype™ à rbaatouc
désolé javais mal compris, je sais pas mais si c possible jaimerais bien savoir
rbaatouc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/04/2006, 15h14   #5
Rédacteur
 
Avatar de Swoög
 
Inscription : janvier 2003
Messages : 6 053
Détails du profil
Informations personnelles :
Âge : 24

Informations forums :
Inscription : janvier 2003
Messages : 6 053
Points : 7 144
Points : 7 144
Envoyer un message via MSN à Swoög Envoyer un message via Skype™ à Swoög
il y a bien sesion_set_save_handler qui devrait te permettre de definir une fonction appelée à la destruction de la session : http://fr.php.net/manual/fr/function...ve-handler.php
__________________
Rédacteur "éclectique" (XML, IRC, Web...)
Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
pensez à la balise [code] (bouton #) et au tag (en bas)
Swoög est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/04/2006, 15h22   #6
Membre régulier
 
Inscription : novembre 2005
Messages : 173
Détails du profil
Informations forums :
Inscription : novembre 2005
Messages : 173
Points : 84
Points : 84
merci!

par contre, j'ai de la peine à comprendre comment ça marche..

Voici l'exemple qu'ils donnent:

Code :
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
 
 <?php
function open ($save_path, $session_name) {
  global $sess_save_path, $sess_session_name;
 
  $sess_save_path = $save_path;
  $sess_session_name = $session_name;
  return(true);
}
 
function close() {
  return(true);
}
 
function read ($id) {
  global $sess_save_path, $sess_session_name;
 
  $sess_file = "$sess_save_path/sess_$id";
  if ($fp = @fopen($sess_file, "r")) {
    $sess_data = fread($fp, filesize($sess_file));
    return($sess_data);
  } else {
    return(""); // Doit retourner "" ici.
  }
 
}
 
function write ($id, $sess_data) {
  global $sess_save_path, $sess_session_name;
 
  $sess_file = "$sess_save_path/sess_$id";
  if ($fp = @fopen($sess_file, "w")) {
    return(fwrite($fp, $sess_data));
  } else {
    return(false);
  }
 
}
 
function destroy ($id) {
  global $sess_save_path, $sess_session_name;
 
  $sess_file = "$sess_save_path/sess_$id";
  return(@unlink($sess_file));
}
 
/*******************************************************
 * ATTENTION - Vous devrez implémenter un       *
 * collecteur de données obosolètes ici. *
 *******************************************************/
function gc ($maxlifetime) {
  return true;
}
 
session_set_save_handler ("open", "close", "read", "write", "destroy", "gc");
 
session_start();
 
// Utilisez vos sessions comme d'habitude
?>
faut-il implémenter dans chaque page toutes ces fonctions??

dans mon cas, seulement destroy m'intéresse non?

si c'est le cas.. par exemple dans la fonction destroy j'insère mon code qui efface mes donnés dans la bd et pis c'est bon?
FredKéKé est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/04/2006, 15h32   #7
Rédacteur
 
Avatar de Swoög
 
Inscription : janvier 2003
Messages : 6 053
Détails du profil
Informations personnelles :
Âge : 24

Informations forums :
Inscription : janvier 2003
Messages : 6 053
Points : 7 144
Points : 7 144
Envoyer un message via MSN à Swoög Envoyer un message via Skype™ à Swoög
en effet, seul destroy t'intéresse, mais j'ai peur qu'il ne faille toutes les redéfinir, puisqu'on ne peut pas en modifier qu'une seule...

par contre, pour "est-ce qu'il faut le mettre sur chaque page" il faut faire de tests, je ne l'ai jamais utilisé... désolé
__________________
Rédacteur "éclectique" (XML, IRC, Web...)
Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
pensez à la balise [code] (bouton #) et au tag (en bas)
Swoög est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/04/2006, 15h37   #8
Membre régulier
 
Inscription : novembre 2005
Messages : 173
Détails du profil
Informations forums :
Inscription : novembre 2005
Messages : 173
Points : 84
Points : 84
ok merci demain je te fais savoir

pour la redéfinition.. c'est pas grave, je met en return true de partout et y a pas de probs
FredKéKé est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/04/2006, 15h38   #9
Rédacteur
 
Avatar de Swoög
 
Inscription : janvier 2003
Messages : 6 053
Détails du profil
Informations personnelles :
Âge : 24

Informations forums :
Inscription : janvier 2003
Messages : 6 053
Points : 7 144
Points : 7 144
Envoyer un message via MSN à Swoög Envoyer un message via Skype™ à Swoög
Citation:
Envoyé par FredKéKé
pour la redéfinition.. c'est pas grave, je met en return true de partout et y a pas de probs
j'ai peur que ce ne soit pas une solution, appuie toi plutôt sur l'exemple qu'ils ont donnés, ç'a l'air d'être les fonctions par défaut
__________________
Rédacteur "éclectique" (XML, IRC, Web...)
Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
pensez à la balise [code] (bouton #) et au tag (en bas)
Swoög est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/04/2006, 15h43   #10
Membre émérite
 
Avatar de Yobs
 
Inscription : avril 2004
Messages : 675
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : avril 2004
Messages : 675
Points : 808
Points : 808
Envoyer un message via MSN à Yobs
Au pire tu inclus ton fichier sur toutes tes pages utilisant les sessions.
__________________
Chaque problème a une solution, mais il est plus facile de répondre si le problème est correctement renseignés
Yobs est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/04/2006, 13h18   #11
Membre régulier
 
Inscription : novembre 2005
Messages : 173
Détails du profil
Informations forums :
Inscription : novembre 2005
Messages : 173
Points : 84
Points : 84
marche po
FredKéKé est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/04/2006, 13h38   #12
Membre confirmé
 
Inscription : août 2003
Messages : 225
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : août 2003
Messages : 225
Points : 225
Points : 225
Envoyer un message via MSN à Steph82
Franchement, je me demande si c'est possible. j'ai jamais vu de moyen de détecter la destruction d'une session lorsqu l'on ferme la navigateur
Le meilleur moyen est de détecter si le temps de ta session a expiré, si oui, tu détruis les informations que tu veux dans ta base.
Steph82 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/04/2006, 13h43   #13
Rédacteur
 
Avatar de wamania
 
Développeur Web
Inscription : juillet 2003
Messages : 676
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : juillet 2003
Messages : 676
Points : 678
Points : 678
de toute façon, ça t'aurait rien apporter pour ton pb, tu veux detruire les sessions qd un visiteur quitte le site sans réellement se déconnecter.
Cette méthode destroy ne sera pas plus appelée que si elle n'était pas redéfinie.

Pour détruire ces sessions, le mieux, c'est à chaque gars qui se connecte, tu cherche les sessions datant de plus de x mins, et tu les effaces.

Il n'y a aucun moyen simple et fiable de savoir qu'un visiteur est parti, hormis le faite de se dire que si on a pas de nouvelles, c'est qu'il est parti.

message croisé avec Steph82, qui pense la meme chose
__________________
Articles sur developpez.com
- Gestion des exceptions avec PHP5
- Chiffrement et hash en PHP contre l'attaque Man in the middle
- Aedituus - Espace membre sécurisé en PHP5

Lithium : ORM ActiveRecord PHP5 extrêmement léger
wamania est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/04/2006, 13h46   #14
Membre régulier
 
Inscription : novembre 2005
Messages : 173
Détails du profil
Informations forums :
Inscription : novembre 2005
Messages : 173
Points : 84
Points : 84
ok.. donc c'est la merde..

merci

a +
FredKéKé est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/04/2006, 14h00   #15
Membre confirmé
 
Inscription : août 2003
Messages : 225
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : août 2003
Messages : 225
Points : 225
Points : 225
Envoyer un message via MSN à Steph82
Bah faut pas être défetiste . Il suffit de stocker les id de sessions et de mettre à jour le temps de la derniere session dans une table.
Et dès que le temps de ta session + un temps que tu définis est dépassé, tu delete l'enregistrement de la table, et tu fais ton traitement s'il y a lieu.
Ce sera pas en temps réel, c'est le seul défaut.
Steph82 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 11h07.


 
 
 
 
Partenaires

Hébergement Web