Comment faire un bon system de session?

Comment faire un bon system de session? - PHP - Programmation

Marsh Posté le 05-11-2003 à 15:11:48    

Bonjour a tous,
J'aimerais faire sur mon site un system de session qui me permettrais d'afficher sur mon menu a gauche toute les personnes actuellement connecte a mon site. Malheureusement je n'arrive pas a trouver un system efficace... avez vous une solution?
 
ps: savez vous comment fait PHPBB pour leurs forums?

Reply

Marsh Posté le 05-11-2003 à 15:11:48   

Reply

Marsh Posté le 05-11-2003 à 19:58:41    

je vois que personne ne veut repondre ... merci les gars

Reply

Marsh Posté le 05-11-2003 à 21:20:59    

c tro long a expliquer
va sur  http://az-php.com/?p=cours_23

Reply

Marsh Posté le 05-11-2003 à 22:19:15    

j'ai deja vu ce site mais le prob c'est que je ne peux pas savoir si les autres sont connecté avec ce system.... vous voyez ce que je veux dire?

Reply

Marsh Posté le 05-11-2003 à 22:24:10    

ils stockent simplement les personnes connectées dans une table.

Reply

Marsh Posté le 05-11-2003 à 22:25:55    

Oui c'est ce que je me suis dit mais le prob c'est de savoir quand on doit les considerer comme deconnecte... parce que avec phpbb des que les mec sort du forum... c'est mis de suite a jour... c'est ca que je capte pas trop... vous avez pas une idee?

Reply

Marsh Posté le 05-11-2003 à 22:28:05    

non, c'est pas mis à jour de suite, c'est réactualisé en fonction d'un timeout que tu décides à chaque rafraichissement de la page.

Reply

Marsh Posté le 06-11-2003 à 12:10:48    

D'accord alors imaginons que le time out est tres court comme ca des que le gars se deco, on le remarque tres rapidement... ca veut dire aussi que s'il reste longtemps sur une page il sera alors considere comme deco .. non?
Hors sur phpbb il n'est pas considere comme deco.... probleme... comment ils font?

Reply

Marsh Posté le 06-11-2003 à 12:35:11    

Hankmoon a écrit :

D'accord alors imaginons que le time out est tres court comme ca des que le gars se deco, on le remarque tres rapidement... ca veut dire aussi que s'il reste longtemps sur une page il sera alors considere comme deco .. non?
Hors sur phpbb il n'est pas considere comme deco.... probleme... comment ils font?


 
Ils mettent un timeout très long ?

Reply

Marsh Posté le 06-11-2003 à 12:37:19    

Regarde le code de PHPBB !


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 06-11-2003 à 12:37:19   

Reply

Marsh Posté le 06-11-2003 à 12:38:56    

Idée :
 
Timeout court + frame cachée qui se rafraichie souvent.


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 06-11-2003 à 12:46:20    

ben je pense pas sinon ca marcherai pas.... ya une incoherence la...

Reply

Marsh Posté le 06-11-2003 à 12:48:52    

le code de phpbb est completement inconprehensible.... si vous avez deja regarde...
le prob de la frame cacher c'est que ca prend des ressources... et visiblement ils n'utilisent pas ca... puisqu'il faut rafraichier la page pour voir les changements...

Reply

Marsh Posté le 06-11-2003 à 14:13:59    

Je parle d'une frame cachée qui ne fait rien d'autre que se rafraichir. Elle ne permet de pas de montrer les changements, mais juste de garder la session ouverte.
Je n'ai pas dis que c'était ce qu'utilise phpbb !
J'ai jamais regardé le code de phpbb, je ne m'interesse pas au forums pour le moments ;)
M'enfin je vais jetter un oeuil, des fois qu'il y ait une techinque interessante.


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 06-11-2003 à 16:19:00    

:sarcastic: vu que la table est rafraichie à chaque visite, rien ne vous empèche de réinitialiser le compteur pour la personne qui rafraichit la page.

Reply

Marsh Posté le 06-11-2003 à 17:02:16    

gizmo a écrit :

:sarcastic: vu que la table est rafraichie à chaque visite, rien ne vous empèche de réinitialiser le compteur pour la personne qui rafraichit la page.


Hein c'est possible çà :ouch:  
 
Ha, heu, ben oui en fait. C'est même de çà qu'on parle...
 
Bon, Hankmoon, j'ai regardé un peu phpbb, et y'a rien d'extraordinaire. Un simple timeout, pas de détection de déconnexion.


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 07-11-2003 à 14:29:06    

oki alors il se la font simple... a chaque connection il stock dans une base de donne avec un timeout et des que le time out est passe le gars est considere comme deco...
oki bon je fera ca alors...
merci les gars..

Reply

Marsh Posté le 07-11-2003 à 14:29:38    

Ha juste encore... le truc de la Iframe qui se rafraichi tout le temps.. c'est pas trop lourd au final sur le site?

Reply

Marsh Posté le 07-11-2003 à 14:32:36    

mais pourquoi tu veux faire une frame? t'en a pas besoin!

Reply

Marsh Posté le 07-11-2003 à 14:42:42    

non c'etait juste une question, j'ai vu un site que avait fait une iframe et qui la rafraichissait toute les 15 sec... je me posait la question de savoir si c'etait pas trop lourd...

Reply

Marsh Posté le 07-11-2003 à 15:19:06    

gizmo a écrit :

mais pourquoi tu veux faire une frame? t'en a pas besoin!


Si tu te débrouille bien, c'est super light. Y'a quazi rien à envoyer, et sur le serveur y'a juste un update.


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 07-11-2003 à 15:25:02    

c'est plus ligth de faire l'update au moment où le type rafraichit sa page volontairement ou navigue dans le site.

Reply

Marsh Posté le 07-11-2003 à 16:18:40    

Oui, bien sûr !
 
Le but est d'avoir un timeout de session très court, genre 30 secondes.
 
Donc si tu reste sur ta page sans rien faire, ben t'es toujours considéré comme connecté. Par exemple, tu apparais dans la liste des utilisateurs. Alors que si tu fermes le navigateur, tu disparais en 30 secondes.
 
Reste à voir si çà a une utilité, mais c'est une autre histoire.


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 07-11-2003 à 16:33:03    

Mara's dad a écrit :

Oui, bien sûr !
 
Le but est d'avoir un timeout de session très court, genre 30 secondes.
 
Donc si tu reste sur ta page sans rien faire, ben t'es toujours considéré comme connecté. Par exemple, tu apparais dans la liste des utilisateurs. Alors que si tu fermes le navigateur, tu disparais en 30 secondes.
 
Reste à voir si çà a une utilité, mais c'est une autre histoire.


 
Et tu marques comme connecté une personne qui a laissé ouvert en tache de fond son navigateur pendant 3 jours. Pas très fiable quoi :)

Reply

Marsh Posté le 07-11-2003 à 17:02:18    

phpBB doit tenir a jour une liste des personnes connectees, en enregistrant la date du dernier clic de chaque user.
Est considere comme deconnecte un user qui n'a pas clique depuis x minutes ...

Reply

Marsh Posté le 07-11-2003 à 17:26:38    

Et est ce que ca n'influence pas la page sur laquel on est ? parce que j'ai remarque qu'a chaque maj de cette iframe la page ramé... et personnelement ca donne pas bcp envie d'en faire une...

Reply

Marsh Posté le 07-11-2003 à 19:08:11    

bah oui, c'est normal. Vu qu'il y a rechargement de la page, elle doit être redessinée, même s'il n'y a rien à afficher.

Reply

Marsh Posté le 07-11-2003 à 20:07:18    

Non, en phpBB, il n'y a pas d'IFRAME dans la page, c'est le dernier clic qui compte. et si au bout de 3 minutes tu n'as pas clicquer qque part c'est que vraisemblablement, tu es en train de faire autre chose ...

Reply

Marsh Posté le 07-11-2003 à 20:32:04    

ca a aucun rapport mais est-ce quil serait possible de faire un javascript qui ecrit dans un fichier quand qqun sen va du site
je mexplik : on dirait quon peut faire des action javascript quand la fenetre se ferme, et si on peut ecrire dans un fichier avec javascript(je suis pas sur) on pourrait imaginer le systeme de visiteurs online ultime, il suffirait de rajouter 1 quand qqun arrive sur le site, et denlever 1 quand il sen va..
c possible ¿

Reply

Marsh Posté le 07-11-2003 à 20:47:40    

Tu en connais beaucoup de javascript coté client qui écrit dans un fichier coté serveur ?

Reply

Marsh Posté le 07-11-2003 à 21:46:27    

Kristoph a écrit :

Tu en connais beaucoup de javascript coté client qui écrit dans un fichier coté serveur ?


 
ha vi chuis bete :(
mé alors ya pas moyen de faire un compteur de visiteur online qui marche pas quavec des approximations ?

Reply

Marsh Posté le 07-11-2003 à 23:47:07    

non.

Reply

Marsh Posté le 08-11-2003 à 19:54:04    

Y'a un truc possible, mais c'est pas beau :
 
Quand on ferme le navigateur ou si on va sur un autre site, on ouvre une fenêtre sur une url de déconnexion.
Cette fenêtre se ferme toute seule quand elle est chargée.
 
Du coup le site sait quand quelqu'un est parti, ce qui n'empèche pas de gérer un timeout, par exemple pour le gars qui reste sur la fenêtre 3 jours, ou pour celui victime d'une coupure de courant ou plus souvent d'un plantange d'IE.
 
Mais comme je l'ai dis, c'est pas beau...
Il faudrait que les navigateurs puisse gérer autre chose que du GET/POST, mais c'est pas pour tout de suite (sauf avec un composant externe...)


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 08-11-2003 à 19:57:42    

et encore, ton système ne marcherait que chez les personnes qui n'ont pas d'anti-pop-up ou le JS désactivé.

Reply

Marsh Posté le 09-11-2003 à 15:16:24    

Bon, j'ai essayé un truc :
 
Page dont on veux controler la deconnexion (index.html):

<html>
<head>
<script>
function deconnexion()
{
 document.body.innerHTML='<IFRAME src="deconnexion.php?id=25&userAgent=' + navigator.appName + '" width="1" height="1" scrolling="no" frameborder="0" style="display=none"></IFRAME>';
}
</script>
</head>
<body onunload="deconnexion();" onbeforeunload="deconnexion();">
Essai deconnexion par Iframe.
</body>
</html>


Page qui enregistre la deconnexion (deconnexion.php):

<?php
$f=fopen( 'deconnexion.txt', 'a' );
fwrite( $f, "id={$_GET['id']}, agent={$_GET['userAgent']}\r\n" );
fclose( $f );
?>


Résultat sur le serveur (deconnexion.txt) :

id=25, agent=Netscape
id=25, agent=Microsoft Internet Explorer


Cà marche pas à tous les coups, vu qu'on est pas trop cencé faire grand chose dans onUnload() ou dans onBeforeUnload(), mais c'est une piste.


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 09-11-2003 à 20:11:58    

Donc dès que tu changes de page, t'es considéré comme déconeccté avant de te reconecter. ;)
Mais si le navigateur à le javascript désactivé ou le navigateur qui se plante, le visiteur est toujours connecté.
De plus, si le gas reste pendant 3 jorus sur la page, c'est pareil. ;)

Reply

Marsh Posté le 10-11-2003 à 10:24:52    

1- Connexion, déconnexion, en fait c'est pas aussi important que çà. Il s'agit juste pour un forum de savoir qui est en ligne. Donc çà ne me choque pas. En plus, c'est qu'un démonstrateur, c'est un truc à désactiver si tu passe à une autre page du même forum (avec un flag par exemple...)
2- Il faut de toute façon un timeout. Voir posts plus haut.
3- Sans JS, on va pas bien loin sur le net aujourd'hui...


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 10-11-2003 à 10:26:09    

Mara's dad a écrit :


3- Sans JS, on va pas bien loin sur le net aujourd'hui...


euh...

Reply

Marsh Posté le 10-11-2003 à 10:29:46    


Je m'incline devant un tel argument.
 
Au fait, çà s'écrit Meuh :D
Enfin, les vaches de chez moi l'écrivent comme çà...


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 10-11-2003 à 10:33:10    

pourquoi vous voulez à tout prix lister les users à 5 sec près?

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed