Détection de la destruction de la session [Résolu]

slhuilli 193 Messages postés lundi 7 janvier 2002Date d'inscription 7 juillet 2017 Dernière intervention - 3 avril 2008 à 16:58 - Dernière réponse : slhuilli 193 Messages postés lundi 7 janvier 2002Date d'inscription 7 juillet 2017 Dernière intervention
- 3 avril 2008 à 21:29
est il possible, par code, de savoir qu'une session est detruite ? (enfin reagir à un événement "sur sestruuction de session" si on parlait evenementiel ?)

Merci
Afficher la suite 

Votre réponse

8 réponses

Meilleure réponse
neigedhiver 2492 Messages postés jeudi 30 novembre 2006Date d'inscription 14 janvier 2011 Dernière intervention - 3 avril 2008 à 17:17
3
Merci
Salut,

PHP n'est pas un langage qui gère des événements, contrairement à Javascript.
Donc non, il n'est pas possible, de base, d'exécuter un script quand une session est détruite (ou lors de tout autre événement).

Ce qu'il est possible, c'est d'utiliser une fonction que l'on appelle pour détruire une session.
par exemple :
function my_session_destroy() {
  if (session_destroy()) {
    // Code a éxecuter
  }
}

Au lieu d'appeler session_destroy() dans ton code, tu appelles cette fonction qui fait ce que tu veux quand cet événement survient.

Neige

N'hésitez pas à lire la doc de PHP avant de poser des questions triviales...

Merci neigedhiver 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 92 internautes ce mois-ci

Commenter la réponse de neigedhiver
Meilleure réponse
slhuilli 193 Messages postés lundi 7 janvier 2002Date d'inscription 7 juillet 2017 Dernière intervention - 3 avril 2008 à 19:26
3
Merci
tout a fait d'accord mais si l'utilisateur ferme le browser par la froix (sur PC) en haut a droite ? Ca marchera ca ?

Merci slhuilli 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 92 internautes ce mois-ci

Commenter la réponse de slhuilli
Meilleure réponse
slhuilli 193 Messages postés lundi 7 janvier 2002Date d'inscription 7 juillet 2017 Dernière intervention - 3 avril 2008 à 21:29
3
Merci
wai je pense que t'as raison qd meme, je vais laisser tomber mon projet de retranscription dans le monde libre de ce truc alors, ca sert a rien d'ecrire un script fiable qu'à 70%

Merci slhuilli 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 92 internautes ce mois-ci

Commenter la réponse de slhuilli
nicomilville 3498 Messages postés lundi 16 juillet 2007Date d'inscription 28 février 2014 Dernière intervention - 3 avril 2008 à 17:11
0
Merci
Salut,

Bonjour, tu a posté 118 messages, tu devrai savoir dire bonjour, je plaisante  mais il y en a qui te le diron plus méchament je pense !!!
Je ne sais pas mais la meilleur façon de savoir c'est de tester, a tu testé avec un if(session_destroy){ton code}

Si t'a besoin d'aide, MP !!!
Commenter la réponse de nicomilville
neigedhiver 2492 Messages postés jeudi 30 novembre 2006Date d'inscription 14 janvier 2011 Dernière intervention - 3 avril 2008 à 19:58
0
Merci
Cette question revient encore et toujours...

Non, ça ne marchera pas, parce que PHP est exécuté côté serveur.
PHP ne fait rien d'autre que traiter des requêtes qu'on lui envoit. Si on ne lui envoit rien, il ne fait rien. C'est un peu le chef cuistot, le serveur web (la machine) le restaurant à emporter : le client passe sa commande au serveur. Si c'est juste de la limonade (HTML, texte brut), il s'en charge tout seul (sort les bouteilles et les porte au client / lit les fichiers et les renvoit au client). Si c'est de la gastro, il demande au cuisinier qui va lui préparer le plat suivant la recette et en tenant compte des préférences du client (PHP va traiter un script avec les paramètres que lui fournit le client). Le serveur donne tout ça au client quand c'est prêt.

Bref.

La seule solution pour vérifier qu'un script est appelé quand la fenêtre du navigateur est fermée, c'est d'utiliser un javascript, qui va réagir à l'événement fermeture (onunload). Ce javascript doit appeler le script PHP que tu veux, qui enregistrera la déconnexion.
Cette solution n'est pas fiable à 100%, parce que javascript peut se désactiver.
Et si un utilisateur laisse la fenêtre ouverte pendant 107 ans, tu croiras qu'il est toujours connecté alors que non.
C'est pas pour rien que sur tous les sites qui affichent la liste des connecté, il est précisé qu'il s'agit des personnes qui ont eu une activité sur le site pendant les X dernières minutes : parce que c'est la seule chose que l'on puisse vraiment vérifier de manière absolument certaine.

Mais bon, une petite recherche sur le forum t'aurait donné la réponse, que j'ai déjà faite il n'y a même pas un mois... Et que d'autres ont certainement déjà faite aussi, et que l'on trouve en abondance sur le net (google est ton ami)

Neige

N'hésitez pas à lire la doc de PHP avant de poser des questions triviales...
Commenter la réponse de neigedhiver
slhuilli 193 Messages postés lundi 7 janvier 2002Date d'inscription 7 juillet 2017 Dernière intervention - 3 avril 2008 à 20:25
0
Merci
alors sur tout ce que tu dsi, neigedhiver, je suis entierement d'accord. Maintenant je rajoute une petite sauce : j'ai vu fonctionner ce genre de techno en .net et ca marchait (pour ne pas le citer, c'étais sur tchatche.com) et je pensais (d'apres ce que m'ont dit aussi les formateurs .Net) que c'était le serveur qui gérait tout. D'où mon interrogation pour trasposer ce script sur une plateforme libre...
Commenter la réponse de slhuilli
neigedhiver 2492 Messages postés jeudi 30 novembre 2006Date d'inscription 14 janvier 2011 Dernière intervention - 3 avril 2008 à 21:20
0
Merci
Ben tu peux rajouter toutes les sauces que tu veux, c'est comme ça que ça se passe en PHP. Si on pouvait faire autrement, ça se saurait.
Avec .Net, le site en question utilise peut-être un ActivX qui lui, peut être en dialogue constant avec le serveur.
Mais si tu me demandes comment on fait en php, tu n'auras pas d'autre réponse que celle que je viens de te donner.
On peut toujours rajouter plein d'objets plus ou moins standards, plus ou moins compatibles, sur une page. On peut embaquer tout un tas de trucs. Flash, ActivX, Applet Java, et j'en passe. Chaque objet fonctionne à sa manière. Chaque objet réagit à son environnement. Quand un objet est reçoit l'information comme quoi il va être détruit, il peut encore faire des trucs avant de se faire hara-kiri : il peut envoyer une requête au serveur, afficher un dernier soubressaut à l'écran...

Mais tous ces objets, en plus de ne pas être forcément standards et compatibles avec tous les navigateurs, peuvent ne pas être chargés du tout. Je te mets au défi de savoir précisément avec tous les moyens que tu veux, quand un utilisateur de Lynx ferme son navigateur : tu ne pourras pas, jamais, c'est impossible, parce que Lynx n'affiche pas d'images, n'exécute pas Javascript et n'interprète pas les css, alors flash, les midi en fond et les applets et autres ActiveX...

Neige

N'hésitez pas à lire la doc de PHP avant de poser des questions triviales...
Commenter la réponse de neigedhiver
neigedhiver 2492 Messages postés jeudi 30 novembre 2006Date d'inscription 14 janvier 2011 Dernière intervention - 3 avril 2008 à 21:21
0
Merci
Tiens, pour en rajouter une couche...
Je suis persuadé que si tu débranches la connexion réseau de ton ordinateur sur le site dont tu me parles, il ne sait pas que tu t'es déconnecté...
Rien n'est infaillible dans ce domaine... loin de là...

Neige

N'hésitez pas à lire la doc de PHP avant de poser des questions triviales...
Commenter la réponse de neigedhiver

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.