Dat kan je nooit met zekerheid weten. Gewoon controleren of iemand bijv. de laatste 5 minuten actief is geweest. Zo ja, dan is het online, anders niet. Bijv. bij het inloggen in je database de tijd van inloggen opslaan. Als een pagina opgevraagd wordt dan huidige tijd - tijd van inloggen. Is dat langer dan 5 minuten dan is hij online. Dit is even grofweg.
maar als iemand met cookies werkt, kun je niet zien waneer die zich inlogt(als ie al ingelogt is).. dus dan zul je al moeten kijken naar het ip waneer die zich aanmeld op jou site. dus dan zou je toch langzaam aan de ip's op moeten gaan slaan lijkt mij?
(het is geen oplossing maar een gedachte speling van mij. klopt dit?)
Dat kan je nooit met zekerheid weten. Gewoon controleren of iemand bijv. de laatste 5 minuten actief is geweest. Zo ja, dan is het online, anders niet. Bijv. bij het inloggen in je database de tijd van inloggen opslaan. Als een pagina opgevraagd wordt dan huidige tijd - tijd van inloggen. Is dat langer dan 5 minuten dan is hij online. Dit is even grofweg.
Je bedoelt het misschien goed, maar als iemand dan inlogt en hij blijft 2 uur op de site, dan vergelijkt het script na die 2 uur de tijd met de tijd van inloggen (= 2 uur geleden) en dan ben je dus niet actief.
Je moet elke keer als een pagina geladen wordt de tijd in de database updaten.
Je slaat per persoon die inlogt de tijd van inloggen op. Wanneer A op de site komt, wordt het tijdstip opgeslagen. Wanneer bijv. A naar een andere pagina gaat, wordt het huidige tijdstip - inlogtijdstip gedaan. Is dat bijv. > 5 minuten, dan niet als online weergeven. Anders wel. Begrijp je? De tijd hoeft dus niet geupdate te worden. Wat bijv. zou kunnen: wanneer een pagina geopend wordt, en je ziet dat een sessie verlopen is, dat dan de tijd van die persoon gereset wordt.
Op bijv. tijd.php zet je de code die de tijd vernieuwt. Die pagina include je dan in elke pagina op je website, en dus als A naar pagina 1 gaat, refresh het script tijd.php de tijd van wanneer A was ingelogd. Dus de tijd blijft altijd updaten als A naar een andere pagina gaat. En dan haal je op hoeveel personen online zijn met bijv. de volgende code:
<?PHP
$sql = "SELECT id, username FROM online WHERE tijd > '".(time()-300."'"; //selecteren uit tabel 'online' waar tijd is groter dan tijd - 5 minuten
$result = MySQL_Query($sql); //sql uitvoeren
$aantal = MySQL_Num_Rows($result); //aantal online tellen
echo "Er zijn ".$aantal." members online.<BR>"; //aantal online echoën
?>
Mzzls,
Rensjuh
<?PHP
$sql="SELECT id, username FROM online WHERE tijd > '".(time()-300."'";//selecteren uit tabel 'online' waar tijd is groter dan tijd - 5 minuten
<?php
# index.php
/*
If user is logged in we will update his last activity
time, so we can see who is online at the moment.
*/
if ($_SESSION['login'] == 1) {
$updateact = mysql_query("UPDATE users SET lastactive = '".$time."' WHERE userid = '".$_SESSION[userid]."'");
}
?>
<?php
# index.php
/*
If user is logged in we will update his last activity
time, so we can see who is online at the moment.
*/
if($_SESSION['login']==1){
$updateact=mysql_query("UPDATE users SET lastactive = '".$time."' WHERE userid = '".$_SESSION[userid]."'");
Hij telt alleen de mensen die op dat moment ingelogd zijn aan de hand van die lastactive welke opgeslagen staat in de userdb.
Je kan dit natuurlijk ook doen aan de hand van IP adressen en dat je de oude items welke langer als bv 1 uur niet geupdate zijn verwijderd worden.
als je dan meteen van boven doet: als de sessie niet bestaat: lid
en dan doe je in de while: als id == 'lid' $lid++ ofzo... heb je meteen leden en gasten...
Haha, nooit gedacht dat dit zo'n lang onderwerp zou worden, maar ik kan er zeker wat mee mensen! Ik ga verlopig nog even wat puzzelen en als ik wat zet ik het waarschijnlijk hier wel neer,
Nogmaals bedankt!:D