Ik ben momenteel bezig met een site waar mensen kunnen inloggen. Op deze site kun je ook zien hoeveel mensen er ingelogt zijn.

Er wordt, zodra iemand inlogt, in een database een 0 word veranderd in 1 en weer in 0 zodra iemand uitlogt.

het is dus makkelijk te tellen hierdoor hoeveel mensen er online zijn.

alleen er zijn enkele gebruikers die het vertikken om uit te loggen. hierdoor blijft de 1 staan en krijg je geen goed beeld van wie er nou online is.

weet iemand een idee om dit op te lossen.

p.s. ik werk met sessions en er word om de 40 sec een pagina gerefresht.
Bij elke keer dat er iemand een request doet en dus een sessie gechecked wordt op of de user ingelogd is, doe ik een UPDATE request: dat inlog veld is bij mij een TIJD/DATUM in plaats van een 1 een 0. hierdoor kijk je alleen hoeveel mense er over de afgelopen 10 minuten op de site zijn geweest.
dit heb ik OOK maar dit is niet waterdicht. ik dacht, misschien heeft iemand een andere oplossing?
Waarom is dit niet waterdicht?
als iemand 10 min niet actief is geweest, betekend dat niet dat hij/zij offline is. en als ik dit verleng. dan is nog mijn probleem niet op gelost van zien wie er online is.
Misschien kan je bij het afsluiten een script activeren ofzo...

met onunload....

als je dan een adres intypt kom je eerst weer terug op de site, dit is zeer iritant voor de bezoeker.
Huh? hoeft toch niet??

Bijv. dit:
<?
function logoff()
{
mysql_query("UPDATE users SET online = 'no' WHERE id = '".$toevoeger_id."'") or die('Error: '. mysql_error());
}
?>
<body onunload=logoff()>

ofzo
Het is per definitie niet waterdicht. Je zult ergens een keer moeten definieren of iemand online is of niet. Mijnd efinitie is dat wanneer iemand 10 minuten of een kwartier niet meer de site bekeken heeft deze niet online meer is. HTTP werkt gewoon zo. Ik vind het prima werken, anders zul je meer naar p2p achtige systemen moeten, maar dat is met php slecht te realiseren.

Bij mij werkt het ook tweezijdig: en bij gebruikersprofiel als "Laatst online" en om te checken hoeveel mensen er momenteel online zijn (=over de afgelopen 10 minuten requests hebben gedaan).

Jouw waterdichte oplossingen wordt gewoon simpelweg niet gedragen door het http protocol.
Das jammer, maar iig bedankt allemaal voor de moeite!!
Ik heb wel een uitlog systeempje alleen dan moet je ook met frames werken en als je de site weg klikt komt er een popup zodat je word uitgelogt..

Reageren