Pages :
Bonjour à tous,

alors voilà, je planche sur ce problème depuis quelques jours et je n'ai pas avancé d'un yota. J'essaie d'enregistrer la date et l'heure à laquelle un visiteur quitte le site. J'aimerais l'enregistrer dans un cookies. Ensuite, à la prochaine visite, je veux récupèrer la date et l'heure contenues dans ce cookies de fàçon à mettre en évidence les messages qui ont été écrits depuis la dernière visite de l'utilisateur. Aucune différence à faire entre les personnes qui sont enregistrées ou non.

Pour tout vous dire, j'ai besoin de cà pour améliorer mon forum.

Et, une petite précision, j'ai trouvé des postes de forum ou des tutos, des scripts et autre qui avaient un rapport(léger) avec ma question, mais dans tous les cas, il était conseillé de faire un refresh de la page et enregistrer à chaque fois la date et l'heure dans la base de données.
Pour ma part, je ne veux pas faire de refresh de la page, je n'aime pas cette fàçon de faire et en plus, les accès à la base de données sont très lents.

Je me demandais donc si vous pouviez me proposer une autre solution ?
Et si vous avez du code à me fournir, ce n'est pas de refus parce que là, je pédale dans la semoule.

Merci d'avance à toutes et tous,

RedOx

(Si vous voulez voir le forum : http://www.phpsites.net/forum/ , il est toujours en construction et j'ai retiré le design pour repartir sur des bases plus saines.)
Modifié par RedOx (21 Sep 2005 - 18:37)
cela risque d'être compliqué car plusieurs cas :
- L'utilisateur vide souvent ses cookies
- L'utilisateur a désactivé les cookies
- L'utilisateur n'a pas un IP fixe

Le seul moyen est déjà de pouvoir l'identifier via un compte utilisateur. Autrement c'est même pas la peine d'y penser.
Et en imaginant que je ne laisse cette option qu'aux personne senregistrées, quelle serait la meilleur fàçon de faire selon toi ?
Modifié par RedOx (14 Sep 2005 - 12:22)
Il est possible de serialisé un tableau (jonglé avec ses index et ses valeurs... et pourquoi pas utiliser un multi-dimensionnelle...) et de la passer en cookie.

(si avec ça, je t'aide pas !! Smiley lol )
il y a les sessions en PHP...

en dumpant $_SERVER j' ai repérer une variable 'UNIQUE_ID', je pensais
m' en server à ce sujet....
Une choses est sure, il est possible de prendre le paramètre à l'arrivée sur une page, mais pas au départ...

J'imagine que si tu souhaite connaître cette info au retour de ton visiteur, c'est pour lui dire, "tiens tu n'a pas vue cette info, ou cette mise à jour..."

Donc il faut à un moment mettre l'information dans un cookie...

Si il efface, il perd la ce petit plus... bon ,ben c'est pas la mort.

.... en fait çà m'intéresse aussi ton affaire....

je vais suivre avec attention Smiley smile
Salut,

Pourquoi lorsque le visiteur quite le site?
Si tu logges son arrivée sur ton site, tu as éjà un bon nombre de renseignement.
Maintenant pour la sortie, cela veux par exemple dire que s'il est loggué il devra cliquer sur deconnexion par exemple.
Perso, je ne réalise jamais cette opération. Il y a toujour un timeout qui le fera en automatique.
Tu pourrais télécharger un forum du style de phpbb, il y a ce genre d'info. Ils doivent stocker cela dans une bdd mais le principe restera le même pour un cookie. Avant, il va te falloir eplucher leur code

Bon courage

JP
Ne regardez pas les sources de phpBB ! c'est comme cela qu'on devient aveugle !! Smiley eek

Je vais aussi suivre l'evolution de ce topic.

Smiley cligne
Modifié par Champolion (14 Sep 2005 - 21:54)
Disons que de s'en tenir à la mise à jour du cookie à l'arrivé sur chaque page me semble bien....

le tout est de savoir si il faut en plus le stocker sous une autre forme ???
si je ne stocke pas la date et l'heure à l'arrivée, c'est simplement parce que forcément, une fois qu'il va comparer cette date aux messages écrits, il ne va pas les considèrer comme nouveaux.

C'est vrai que je pourrais enregistrer ces infos au moment ou l'utilisateur identifié clic sur "Déconnection", mais il y a un tas de personnes (dont je fait partie) qui ne clquent presque jamais sur "déconnection" mais changent simplement de site.
On pourra peut-être trouver une solution ensemble puisque apparement ca intéresse plusieurs personnes.

Moi j'avais pensé à cà :

1. Grâce à un "onUnload" et javascript, enregistrer la date et l'heure à laquelle le visiteur quitte le site.
2. A la prochaine reconnection, récupérer ces infos et les comparer aux dates des messages des forums pour déterminer s'il ont été introduit après.

Mais d'après ce qu'il me semble avoir compris, le "onUnload" est loin d'être fiable à 100%. En plus, j'ai essayé de mettre ce bidouillage en oeuvre, mais j'ai du mal en javascript et je n'ai donc pas réussit la première étape Smiley ohwell
Mais en imaginant une routine qui met le cookie à jour à chaque chargement de n'importe quelle page du site... le cookie donne quoi qu'il arrive la date du dernier accès, non ?


Tu me suis ?
Modifié par ernstein (15 Sep 2005 - 01:36)
Pas vraiment non.
En admettant que la personne se connecte à la première page.
A ce moment là, la date est mise à jour.
Ensuite, il clic sur le lien pour accèder au forum.
A ce moment là, le script compare les dates de message à la date du cookie qui est la date du jour puisqu'elle a été modifiée à l'entrée du site.
Dans ce cas, si la personne n'est pas venue depuis deux jours, les messages qui ont été inscrits la veille par exemple, ne seront pas indiqué comme nouveaux messages puisque leur date sera plus ancienne que celle indiquée dans le cookies.

Ou alors, j'ai mal compris ce que tu veux me dire ?
a écrit :
si je ne stocke pas la date et l'heure à l'arrivée, c'est simplement parce que forcément, une fois qu'il va comparer cette date aux messages écrits, il ne va pas les considèrer comme nouveaux.


Smiley ohwell .. ah .. !!

Dans ce cas, tu stockes deux dates (et utilise la date actuel) :
- une lorsque le visiteur arrive sur le site que tu nommes ... date_basecalcul
- une mise à jour à chaque chargement de page que tu nommes ... date_dernierevisite

Dans ce cas de figure, deux choix s'offrent à toi :
- soit le visiteur n'est pas venu donc tu donnes une valeur à ton cookie date_basecalcul des son arrivée (et tu recharges la page)
- soit le visiteur est deja venu donc tu donnes la valeur de date_dernierevisite à date_basecalcul (et te bases sur date_dernierevisite dans un premier temps avant que la page se recharge)

Mais dans tous les cas, tu donnes la valeur de la date actuelle à date_dernierevisite, apres avoir executer ton script ...

De ce fait, tu as un interval de temps (date_base ==> date_passage) pour savoir si le visiteur/membre a de nouveaux messages à lire.

a écrit :
A ce moment là, le script compare les dates de message à la date du cookie qui est la date du jour puisqu'elle a été modifiée à l'entrée du site.
Dans ce cas, si la personne n'est pas venue depuis deux jours, les messages qui ont été inscrits la veille par exemple, ne seront pas indiqué comme nouveaux messages puisque leur date sera plus ancienne que celle indiquée dans le cookies.

Smiley rolleyes

Si tu mets à jour ton cookie à chaque chargement de page, tu te bases sur celle-ci ... donc meme si cela fait deux jours que le visiteur/membre n'est pas venu, c'est avec la date du jour que tu te bases pour executer ton script . Smiley murf

Vous me suivez ?? Smiley biggrin

Mais qui inventeras le calcul le plus haut perché Smiley biggol

Smiley biggrin Smiley biggrin
Modifié par Champolion (15 Sep 2005 - 04:26)
RedOx a écrit :
Pas vraiment non.
En admettant que la personne se connecte à la première page.
A ce moment là, la date est mise à jour.
Ensuite, il clic sur le lien pour accèder au forum.
A ce moment là, le script compare les dates de message à la date du cookie qui est la date du jour puisqu'elle a été modifiée à l'entrée du site.
Dans ce cas, si la personne n'est pas venue depuis deux jours, les messages qui ont été inscrits la veille par exemple, ne seront pas indiqué comme nouveaux messages puisque leur date sera plus ancienne que celle indiquée dans le cookies.

Ou alors, j'ai mal compris ce que tu veux me dire ?



heu... pour moi la date c'est -> 2005-09-15 09:20:34....

avec l'heure...donc du compare l'heure avec.

non, c'est vrai y'a d'autres problèmes .... il faut que je cherche...

en tout cas je penses que le cookie en question ne doit pas forcément être comparé directement. Il doit permettre de stoker de manière simple la dernière date de passage... ->quand le vivisteur arrive et ouvre une session, la date de son dernier passage va dedans, elle sera la même pour toute la session. mais le cookie lui continura à être mis à jour.

pour le forum je penses qu'il faut en plus trouver une solution item par iteml
Modifié par ernstein (15 Sep 2005 - 10:03)
on peut aussi imaginer une solution sans cookie (à tester)

Ouverture de deux variables de session :

session(currentdate) et session(lastvisitdate)

premiere visite -> les deux variables sont initialisées avec la même date.
le visiteurs se balade de page en page à chaque page currentdate est mise à jour.

ensuite on se base sur la fin de session pour mettre à jour la base... c'est la ou faut tester.. en ASP dans le fichier global.asa il est possible d'exécuter du code en fin de session.... mais je ne sais pas si il est possibe de passer une requete....


le jour ou il revient initialisation des variables avec comme point de départ de lasvisitdate la date qui est en base.
Donc pour le moment de mon coté çà fonctionne avec un cookie... en plus des session car je ne parviens pas à exécuter une requete dans le cadre d'une fin de session...

Donc je fais l'update de la base au moment ou le visiteur revient en utilsant le contenu de son cookie...

je cherche encore Smiley fache

çà revient donc à considérer que la date de la dernière visite est valable pour toute la durée de la session....
Modifié par ernstein (15 Sep 2005 - 11:43)
bon ben chez moi çà tourne...

Je vais voir avec le temps si cela est pertinent.

à suivre.

enfin j'aimerais bien trouver une solution sans cookies
Modifié par ernstein (15 Sep 2005 - 13:35)
En tout cas, c'est super.
Je suis content d'avoir poser la question parce que vous m'avez proposé des solutions auxquelles je n'avais pas encore pensé.

Ton système rejoint en fait la théorie de Champolion avec les deux dates.

Mais comme vous l'avez souligné, il y a encore un inconvénient.
Si la date à laquelle on compare est toujours celle de la dernière visite, à chaque fois que l'on sera sur la page principale, il va indiquer les messages inscrits après la dernière visite comme non lus alors qu'on les aura peut-être lus. Smiley confus
Par contre, si on veux éviter celà, il faudrait enregistrer la date courrante, mais alors les messages non encore lus ne seraient plus mis en évidence.
Il faudrait donc bien faire celà item par item mais ca risque d'alourdir considérablement, sans compter le fait qu'il faut encore trouver comment traiter celà. Smiley confus Puisqu'il faut le faire non seulement item par item, mais aussi utilisateur par utilisateur... Smiley confus

Bref, je deviens fou Smiley bawling
Modifié par RedOx (15 Sep 2005 - 17:47)
Salut ,

J'espere que tu arrives à faire ce que tu voulais ...

Pour comprendre comment phpBB obtient les nouveaux messages, voici un exemple ou le membre a posté aujourd'hui (donc il s'est connecté) pourtant dans son profil la date de derniere connexion est d'hier (grosse erreur du webmaster par ailleurs).

Le sujet dans lequel il a posté :
http://www.sylvanimus.org/forum/viewtopic.php?p=23420#23420
La date de sa derniere connexion :
http://www.sylvanimus.org/forum/profile.php?mode=viewprofile&u=9

En fait, la mise à jour de la date se fait une session sur deux ... Smiley ravi

Smiley lol

PS : Exemple ephemere ...
Pages :