Sessions / liste de connectés

Sessions / liste de connectés - PHP - Programmation

Marsh Posté le 27-12-2003 à 21:32:14    

Je suis actuellement en train de réaliser un site web. J'ai commencé à faire l'architecture principale, c'est  à dire:
- le systeme de news
- la liste des membres
- la liste des connectés
 
Pour la liste des connectés, j'ai pensé évidemment aux sessions php, mais je ne les avais jamais utilisées  avant... en fait, les tutoriaux que j'ai lus sur differents sites etaient toujours différents et expliquaient  les choses différemment. J'ai donc eu du mal à comprendre.... En fait ce que je cherche c'est un exemple  concret de sessions php. C'est à dire un morceau de code qui montre le processus d'identification... Je sais  que beaucoup de webmasters fréquentent cette cat... Y en a-t-il un qui aurait la générosité de me passer un  bout de code pour que je vois exactement comment faire? Ou alors connaissez-vous un script bien fait, et  compréhensible facilement et expliqué? J'ai déjà cherché... aucun script ne me convenait...
 
Merci

Reply

Marsh Posté le 27-12-2003 à 21:32:14   

Reply

Marsh Posté le 27-12-2003 à 21:38:35    

je sais pas comment marchent les session en PHP, mais en partant du principe que c'est comme en ASP, tu peux pas passer par les sessions pour faire ça... ou du moins ça sera bien plus compliqué que ça.

Reply

Marsh Posté le 27-12-2003 à 21:41:58    

Grossomodo, en ASP, une solution utilisant les session constiste à faire ça sur les évènements de session :
 


 Sub Session_OnStart
  set cnx = server.CreateObject("ADODB.Connection" )
  cnx.Open application("connectionString" )
  cnx.execute "insert into list_users (SessionID, page) values (" & session.SessionID & ", 'home')"
  cnx.close
  set cnx = nothing
 End Sub
 
 Sub Session_OnEnd
  set cnx = server.CreateObject("ADODB.Connection" )
  cnx.Open application("connectionString" )
  cnx.execute "delete list_user where sessionID = " & session.SessionID
  cnx.close
  set cnx = nothing
 End Sub


 
Puis dans chaque page :
 


  set cnx = server.CreateObject("ADODB.Connection" )
  cnx.Open application("connectionString" )
  cnx.execute "update list_user set page = 'LaPageEnCours' where sessionID = " & session.SessionID
  cnx.close
  set cnx = nothing


 
Pas terrible, mais c'est une solution qui fonctionne bien.

Reply

Marsh Posté le 27-12-2003 à 21:55:14    

j'ai pas du tout compris pour l'exmple ASP, et si, je crois, il faut passer par les sessions. j'ai oublié de préciser que si le connecté a un compte et est identifié, on devrait pouvoir le voir apparaitre dans la liste des connectés, je ne veux pas un simple compteurs de visiteurs online

Reply

Marsh Posté le 27-12-2003 à 22:09:51    

mon truc est pas un compteur. il met à jours une table dans laquelle il y a tous les utilisateurs connectés et les pages où ils sont actuellement.
 
le scope des sessions s'arrête à la session elle-même.
 
c'est à dire qu'une personne ne peux pas aller voir ce qu'il se passe dans les sessions des autres utilisateurs, c'est le b-a-ba de la sécurité. donc les sessions seules ne peuvent pas suffir. à moins que php le permette, mais j'en doute, c'est un trou de sécurité énorme.


Message édité par MagicBuzz le 27-12-2003 à 22:10:16
Reply

Marsh Posté le 28-12-2003 à 00:05:27    

en php, c'est pareil, on utilise aussi ce système.

Reply

Marsh Posté le 28-12-2003 à 19:56:15    

en optimisant:
1ère connexion:
création d'une session  et stockage du [login], ip, page en cours dans les vars de session.
enregistrement dans une table (pour avoir pouvoir lister les visiteurs en cours) : [login], page en cours
 
autre pages :  
regarder si ip identique dans la var de session (précaution...), sinon détruire la session et en créer une nouvelle + update table.
regarder si page différente, updater table.
 
ça évite de faire travailler le serveur db inutilement

Reply

Sujets relatifs:

Leave a Replay

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