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 14/04/2011, 10h30   #1
Membre habitué
 
Avatar de omar24
 
Homme Omar
Inscription : septembre 2010
Messages : 146
Détails du profil
Informations personnelles :
Nom : Homme Omar
Localisation : Maroc

Informations professionnelles :
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : septembre 2010
Messages : 146
Points : 125
Points : 125
Par défaut Exécution de script PHP après fermeture du browser

Salut tout le monde;
Comment faire exécuter un script PHP qui détruit une session et enregistre l'heure de déconnexion dans la base de données après fermeture du browser.
à noter que je ne veux pas utiliser les cookies juste sessions.
Je voudrais faire ça car je fais des statistiques sur les pages visitées et la durée de session de chaque utilisateur dès l'ouverture de session en cliquant sure connecter jusqu'à fermeture de session en cliquant sur se déconnecter.
Mais le problème ce qu'il y a des utilisateurs qui ne se déconnectent pas avant fermer le browser.
merci et rappelez vous que j'ai besoin de votre aide .
omar24 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/04/2011, 10h36   #2
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
Tu vas devoir utiliser de l'ajax
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/04/2011, 11h15   #3
Membre habitué
 
Avatar de omar24
 
Homme Omar
Inscription : septembre 2010
Messages : 146
Détails du profil
Informations personnelles :
Nom : Homme Omar
Localisation : Maroc

Informations professionnelles :
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : septembre 2010
Messages : 146
Points : 125
Points : 125
Oui j'utilise déjà AJAX avec jQuery mais quelle est l'action qui va déclencher l’exécution du script PHP destination de la requête AJAX?
omar24 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/04/2011, 11h49   #4
Membre chevronné
 
Homme
Développeur Web
Inscription : mars 2011
Messages : 399
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Développeur Web
Secteur : Finance

Informations forums :
Inscription : mars 2011
Messages : 399
Points : 662
Points : 662
Code :
1
2
3
$(window).unload( function () { 
    // ajax ici
});
Comme ça ?

http://api.jquery.com/unload/
__________________
Membre de StackOverflow, je suis un fervant utilisateur de PHP et de jQuery.
Après des études de graphisme, j'ai décidé de mélanger développement web et web design. J'ai ainsi donc créé mon site web mais aussi plusieurs projets personnels.
Dans les plus aboutis, vous pourrez trouver dans mon labo et dans mon devblog, un raccourcisseur d'url, un bookmarklet pour envoyer l'url de la page actuelle vers votre email pour lire plus tard ou sauvegarder, mon générateur de template HTML5, etc...
Shikiryu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/04/2011, 12h04   #5
Membre habitué
 
Avatar de omar24
 
Homme Omar
Inscription : septembre 2010
Messages : 146
Détails du profil
Informations personnelles :
Nom : Homme Omar
Localisation : Maroc

Informations professionnelles :
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : septembre 2010
Messages : 146
Points : 125
Points : 125
si j'associe mes requêtes AJAX à cet évènement et d'ailleurs je l'ai fait tout action à part la fermeture de browser comme actualisation de la page ou bien aller d'une page à l'autre via un lien va declencher un unload ce qui va vider les session . alors comment pailler à ce problème??
omar24 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/04/2011, 12h22   #6
Membre chevronné
 
Homme
Développeur Web
Inscription : mars 2011
Messages : 399
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Développeur Web
Secteur : Finance

Informations forums :
Inscription : mars 2011
Messages : 399
Points : 662
Points : 662
Ah oui, effectivement.

Sur le net, j'ai trouvé une astuce mais ça ne détecte pas la différence entre rafraichissement (F5) et fermeture du navigateur.

Code :
1
2
3
4
5
6
7
8
9
10
function onUnloadPage()
{
	if ((window.event.clientX < 0) && (window.event.clientY < 0)) //X button is clicked
	{
	     /*ajax*/
        }
}
$(window).unload( function () { 
    onUnloadPage();
});
__________________
Membre de StackOverflow, je suis un fervant utilisateur de PHP et de jQuery.
Après des études de graphisme, j'ai décidé de mélanger développement web et web design. J'ai ainsi donc créé mon site web mais aussi plusieurs projets personnels.
Dans les plus aboutis, vous pourrez trouver dans mon labo et dans mon devblog, un raccourcisseur d'url, un bookmarklet pour envoyer l'url de la page actuelle vers votre email pour lire plus tard ou sauvegarder, mon générateur de template HTML5, etc...
Shikiryu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/04/2011, 12h33   #7
Membre habitué
 
Avatar de omar24
 
Homme Omar
Inscription : septembre 2010
Messages : 146
Détails du profil
Informations personnelles :
Nom : Homme Omar
Localisation : Maroc

Informations professionnelles :
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : septembre 2010
Messages : 146
Points : 125
Points : 125
ce n'est pas opérationnel si l'actualisation de page fermera la session come fermeture de browser :s

La vraie question qui se pose, est ce qu'il n'y a pas de moyen de détecter le bouton de fermeture d'un browser qui se trouve en haut à droite.?
omar24 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/04/2011, 14h16   #8
Expert Confirmé
 
Avatar de RunCodePhp
 
Inscription : janvier 2010
Messages : 2 709
Détails du profil
Informations personnelles :
Localisation : Réunion

Informations forums :
Inscription : janvier 2010
Messages : 2 709
Points : 3 279
Points : 3 279
Salut

Citation:
Je voudrais faire ça car je fais des statistiques sur les pages visitées et la durée de session de chaque utilisateur ...

La vraie question qui se pose ...
La vrai question dont je me pose par rapport aux statistiques que tu mets en place, c'est quelle conclusion en tireras tu en obtenant le temps entre la dernière page visitée et le temps où le navigateur sera fermé ?


Pour ma part, que l'utilisateur ai mis 2 secondes ou 3 heures à fermer son navigateur après la dernière page demandée, je ne vois vraiment pas quelle conclusion on peu en tirer.
Du coup, je ne vois pas quelle action/modification/amélioration qu'il y aurait à apporter à un site en obtenant cette info.


Citation:
à noter que je ne veux pas utiliser les cookies juste sessions.
Ca l'est déjà, car la persistance obtenue par la session est totalement basée sur un cookie, donc s'il n'y a pas de cookie lié à une session ça ne fonctionnera pas.

Ensuite, si ce que tu recherche à faire n'est pas vraiment lié à des stats mais de sécuriser le site, c'est à dire qu'il ne soit pas possible qu'une fois le navigateur fermé de reprendre la même session, et bien théoriquement ça l'est déjà.
La plupart des navigateurs et par défaut détruisent les cookies après fermeture.
Du coup, s'il n'y plus de cookie, et bien le serveur devrait le détecter, et ne pas récupérer la session lié à ce cookie inexistant, par conséquent de repartir sur une nouvelle session/cookie.
S'il y avait une identification auparavant, il faudra alors se ré-identifier.
C'est théorique car si on prend Firefox par exemple, on peu faire en sorte de modifier ce fonctionnement dans les options.
Ca reste néanmoins une action volontaire de l'utilisateur.



A coté de ça, prospecte du coté de l'évènement "onbeforeunload", il me semble que la plupart des navigateurs le prennent en compte.
__________________
Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]
RunCodePhp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/04/2011, 14h36   #9
Membre chevronné
 
Homme
Développeur Web
Inscription : mars 2011
Messages : 399
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Développeur Web
Secteur : Finance

Informations forums :
Inscription : mars 2011
Messages : 399
Points : 662
Points : 662
Ah oui, effectivement.

Sur le net, j'ai trouvé une astuce mais ça ne détecte pas la différence entre rafraichissement (F5) et fermeture du navigateur.

Code :
1
2
3
4
5
6
7
8
9
10
function onUnloadPage()
{
	if ((window.event.clientX < 0) && (window.event.clientY < 0)) //X button is clicked
	{
	     /*ajax*/
        }
}
$(window).unload( function () { 
    onUnloadPage();
});
__________________
Membre de StackOverflow, je suis un fervant utilisateur de PHP et de jQuery.
Après des études de graphisme, j'ai décidé de mélanger développement web et web design. J'ai ainsi donc créé mon site web mais aussi plusieurs projets personnels.
Dans les plus aboutis, vous pourrez trouver dans mon labo et dans mon devblog, un raccourcisseur d'url, un bookmarklet pour envoyer l'url de la page actuelle vers votre email pour lire plus tard ou sauvegarder, mon générateur de template HTML5, etc...
Shikiryu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/04/2011, 15h34   #10
Membre habitué
 
Avatar de omar24
 
Homme Omar
Inscription : septembre 2010
Messages : 146
Détails du profil
Informations personnelles :
Nom : Homme Omar
Localisation : Maroc

Informations professionnelles :
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : septembre 2010
Messages : 146
Points : 125
Points : 125
salut RunCodePHP:
les clients pour lesquels je développe le site web veulent savoir est ce que leur site est bien utilisé par leurs clients en plus veulent savoir les rubriques les plus visitées donc c'est ce qu'ils veulent, en général c'est l’intérêt et ils insistent sur ce point.
omar24 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/04/2011, 21h38   #11
Expert Confirmé
 
Avatar de RunCodePhp
 
Inscription : janvier 2010
Messages : 2 709
Détails du profil
Informations personnelles :
Localisation : Réunion

Informations forums :
Inscription : janvier 2010
Messages : 2 709
Points : 3 279
Points : 3 279
Citation:
les clients pour lesquels je développe le site web veulent savoir est ce que leur site est bien utilisé par leurs clients en plus veulent savoir les rubriques les plus visitées
D'accord, rien de plus normal.

Mais qu'est ce que cela apporte de savoir le moment où l'utilisateur ferme le navigateur ?
Donc toi même en tant que développeur, quelle conclusion en tirerais tu ?

Personnellement je ne vois vraiment pas.
Il peut évidemment avoir des cas particuliers, je suis alors curieux de le savoir


D'ailleurs, l'action de fermer le navigateur ne correspond pas à une rubrique ou une page du site à mon sens.

De même que, si un utilisateur à plusieurs sites d'ouverts dans plusieurs onglets, qu'il ferme ensuite juste l'onglet du site en question et pas le navigateur, et bien il me semble qu'il sera impossible de déclencher quoi que ce soit au moment où le navigateur sera fermé.
Disons qu'il me parais impossible d'obtenir à coup sûr et pour tous les internautes ce moment où ils fermeront leur navigateur.


Cet action de fermer le navigateur n'a théoriquement aucun rapport avec le site car depuis très longtemps maintenant un navigateur fait bien plus que de faire une visite d'un seul et unique site Web, par conséquent cette info serait inexploitable.

Seule la dernière requête HTTP que le navigateur a envoyé au serveur (en général lié à un clic sur un lien ou formulaire) correspond à mon sens à la dernière action de l'internaute, donc sa dernière visite ou sa sortie si on peu dire, et théoriquement cette info tu l'as.
Donc théoriquement toujours tu devrais avoir tout l'ensemble de la navigation de chaque internaute, depuis le 1er contenu demandé jusqu'au dernier, et par conséquent permettre de ressortir les plus demandés.

Tu remarqueras que j'utilise plutôt le terme de "contenu demandé" que "page visitée", car à mon sens ce terme "visiter" est pas loin d'être un abus de langage quand il s'agit d'un site Web à mon avis.
Un internaute n'entre pas dans un lieu comme dans un musé, il ne vient même pas sur le site Web, il ne fait que recevoir du contenu (du HTML en général), ce qui n'est vraiment pas la même chose.
Enfin, tout ça sauf erreur.




Mise à part ces parenthèses, as tu essayé cet évènement onbeforeunload ?
Il me semble que c'est le seul évènement à peu près exploitable pour déclencher un JS (comme Ajax) au moment de la fermeture du navigateur.
__________________
Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]
RunCodePhp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/04/2011, 09h35   #12
Membre habitué
 
Avatar de omar24
 
Homme Omar
Inscription : septembre 2010
Messages : 146
Détails du profil
Informations personnelles :
Nom : Homme Omar
Localisation : Maroc

Informations professionnelles :
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : septembre 2010
Messages : 146
Points : 125
Points : 125
salut,
Merci beaucoup RunCodePhp pour le temps que tu as consacré pour m’écrire toute cette réponse .
Je laisse tomber les détails et je vais me concentrer seulement sur la visite du début à la dernière requête émise par l'utilisateur.
omar24 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 01h03.


 
 
 
 
Partenaires

Hébergement Web