Dat kan niet met sessions, alleen voor de betrokken user zelf. Je kan wel als iemand is ingelogd, in de database zetten dat die online is, die is wel door iedereen te zien. Een sessie is afhankelijk van de computer waarmee is ingelogd. Als ik in zou loggen, ben ik de engige die (normaal gesproken, dus geen gehack) van die sessie gebruik kan maken.
Zet dus in je database, dat iemand online is. En zorg bijvoorbeeld met een ander script, dat iemand die niet meer online is, elke 10 minuten, of wat jou voorkeur heeft, weer op offline wordt gezet.
En natuurlijk ook bij het uitloggen weer veranderen naar offline.
Ervan uitgaande dat je je UserID in je sessie hebt staan doe je dit:
<?php
$userid=$_SESSION['userid'];
$logout = mysql_query("update members set online='0' where userid='$userid'");
session_destroy();
echo "Succesvol uitgelogd!";
?>
Tjah.. als iemand nu niet uitlogt, dan blijf hij gewoon op online staan in de database. Wat dat betreft is het niet de beste oplossing. (ik weet het, dat hebben ze hier ook :P)
Wat je wel kan doen is een datetime toevoegen aan je database, en die updaten wanneer iemand online is en binnen je profielensysteem naar een andere pagina gaat.
Als je de mogelijkheid hebt tot cronjobs zou je bijvoorbeeld elk halfuur een script kunnen draaien, die mensen die langer dan een bepaalde tijd niet actief zijn (hiervoor moet je de tijd vergelijken) weer als status 0 te geven.
vb. telkens een gebruiker op een pagina staat de datum en tijd in de DB opslaan
+
als er gewoon ergens een pagina geopend wordt, dan checken waar online 1 is en dan of er ergens een van die datums langer dan 10 min geleden is. indien ja, dan online op 0 zetten
ik zou zelf inderdaad ook met tijd werken. Deze is die van mij... Na 10 min is de user offline dit kan je makkelijk veranderen
include ('connect.php');
if(isset($_SESSION['S_M_LLogin'])){
$NU_Datum = date("Y-m-d H:i:s");
if(mysql_query("update tbl_members set LaatsteLogin='$NU_Datum' WHERE M_id='$CHK_M_Login'"));
}else{
//niets
};
$result = mysql_query("select * from tbl_members order by M_id")
or include ('Source\Script\MailErrorBase.php');;
while($row=mysql_fetch_array($result)){
$LaatsteLogin = $row['LaatsteLogin'];
$M_Nick = $row['M_Nick'];
//pakt de leden van de laaste 15 minuten
$getusersonline="SELECT userID,username from b_users where lasttime>'$recent'";
$getusersonline2=mysql_query($getusersonline) or die("Kon geen leden ophalen!");
$num=mysql_num_rows($getusersonline2);
$countguests="SELECT DISTINCT guestip from guestsonline where time>'$recent'";
$countguests2=mysql_query($countguests) or die("Kan de gasten niet tellen!");
$thecount=mysql_num_rows($countguests2);
echo "<table class='maintable' cellspacing='1'>";
echo "<tr class='catline'><td colspan='2'><b>Er zijn $num leden en $thecount guests online geweest in de laatste 15 minuten</td></tr>";
print "<tr class='forumrow'><td>";