Php hors ligne/en ligne

Fermé
gybu - 21 févr. 2009 à 21:56
 gybo - 26 févr. 2009 à 11:37
Bonjour,eu hmeme bonsoir,
je suit en train de faire un forum php/mysql.
Je vient de tomber sur unprobléme:
Un champ de table mysql me sert à indiquer que l'utilisateur est en ligne(il change d'atat lors de l'identification)..
suaf que je ne sait pas comment passer à nouveau en hors ligne si l'utilisateur ne clique pas sur un bouton ' déconnection'...
Avez vous une idée pour gérer ça
Merci :)
A voir également:

6 réponses

lewis34 Messages postés 2557 Date d'inscription samedi 21 juillet 2007 Statut Membre Dernière intervention 30 mai 2015 352
25 févr. 2009 à 06:20
bonjour, je complete un peu ma réponse, hier j'etais à la bourre..

donc tu utilise les sessions que tu remplie avec le loggin (par exemple) de ton visiteur
par contre le plus simple est de creer une nouvelle table dans laquelle tu gerera les connectés

//  //demarrage de la session a mettre en tout début de tes pages
  session_start('visiteur');

$_SESSION['visiteur'] =$_post['loggin'];

cette session tu peut la stocker dans une table visiteur que tu cree, qui pourra contenir l'heure de connexion et son IP 
 ( prépare une requête SQL  qui permet de rechercher cette adresse IP dans ta table, afin de voir si le client qui charge la page n'est pas déjà comptabiliser (en clair : si on trouve l'adresse IP, cela veut dire que le client ne charge pas pour la première fois une page du site, et que donc, tu auras juste à modifier le champs time du tuple le concernant ; si ltu trouve pas cette adresse IP dans la table, cela veut dire que soit le client n'a jamais chargé une page du site, soit il l'a fait, mais il y a plus de 3 minutes ($tps_max_connex = 180; ) ==> la j'ai pris 3minutes
 , ce qui implique qu'il a été supprimé de la table : et dans ces deux cas, il faudra l'insérer dans la table pour le comptabiliser comme étant un nouveau connecté). 

et quand il quitte ton site tu detruit la session
 
 // //destruction de toutes les variable de sessions
  session_unset() ;
//  //destruction de la session
  session_destroy() ; 


en éspérant t'avoir éclairer un peu
2
Super lewis34,
pas mal de choses intéressantes dans ton explication.
Je pensait à un truc comme ça, seulement plutôt que créer une table SQL je voulait mettre en SESSION un tableau php associant chaque membre avec un objet contenant la requête(SELECT * FROM membre WHERE login)

[quote]
et quand il quitte ton site tu detruit la session
[/quote]
donc quand le temps de création de la SESSION est > au temps + durée de la SESSION si j'ai bien comprit?(et en actualisant le temps à chaque changement de page/ou evenement POST ou GET du visiteur )
Je vais creuser là dessus.

euh question à 2 balles, je galéres pour faire des noms de variables dynamique, par exemple:

$login="machin";
$_SESSION["user.$login"]=$login;

la concaténisatin a pas l'air de marcher (en tout cas pas comme avec un echo), une idée?

[quote]
en éspérant t'avoir éclairer un peu
[/quote]
oui, au top :)
0
lewis34 Messages postés 2557 Date d'inscription samedi 21 juillet 2007 Statut Membre Dernière intervention 30 mai 2015 352
21 févr. 2009 à 22:06
est ce que tu utilise le systeme des sessions ?
0
Oui je m'en sert, d'ailleurs je suit en train de refaire ça parce que jen 'ai qu'une session pour tous les membres...donc le dernier connecté 'overwrite les autres'.
Une idée avec les SESSION? à l'expiration, comment faire ça?
merci
0
lewis34 Messages postés 2557 Date d'inscription samedi 21 juillet 2007 Statut Membre Dernière intervention 30 mai 2015 352
24 févr. 2009 à 21:17
ben une session par membre loggés
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
lewis34 Messages postés 2557 Date d'inscription samedi 21 juillet 2007 Statut Membre Dernière intervention 30 mai 2015 352
25 févr. 2009 à 21:11
si tu fait un print_r($_session) tu aura deja un tableau des valeurs contenu dans $session
la solution de la table est à mon avis une des plus simples, et en plus tu peut gerer comme tu le souhaite le nbr d'enregistrements en supprimant ceux qui date de plus de x jours par exemple.

il n'y a pas de question a 2 balles lol !!!
essaye ca pour concatener$_SESSION["user".$login]=$login; mais je vois pas l'interet
fait plutot session_start();
$_session['user']=$login;
$_session['password']=$pasw;
etc..


et pour ce qui est de la durée de vie de la session t'a tout compris , tu peut aussi utiliser les cookies pour le faire

bon courage
@+
0
euh pour la concatenisation des var SESSION c'était parce que dans mes test si un user est connecté et qu'un autre se connecte il réecrit la variable dont je me sert pour repérer qui as posté le message(entre autre), donc truc se connecte puis machin se connecte=> truc poste un message sous l'ID de machin...
Mias bon j'ai vu ce probléme nulle part traité, ce probléme d'overwrite vient problablement de test en local fait sur le même ordi...

Effectivement la solution de la table je vais la faire finalement, ya plus qu'à :]

Merci beaucoup pour ton aide.
0