En der kan fortælle og hjælpe lidt med en lille opgave jeg gerne vil havde på Nixx.dk. ønsker at lave så man kan se i en andens profil om personen er online! lige som på arto og ung-net. ved bare ikke hvad det skal bestå af og hvordan det skal sættes op!
Altså i bund og grund, så kan man ikke vide om en bruger rent faktisk er online eller ej. Men et trick man tit bruger, er at hver gang en bruger besøger en side, så antager man, at brugeren er online fra nu + X antal minutter. Så det er "bare" at gemme brugerid + tid nu i en database, og så lave et udtræk fra databasen og sige alle som har været på besøg fra nu og de sidste X antal minutter, er online.
Sæt et timestamp ind når en bruger der logget ind besøger en side: Alle variabler er bare noget jeg lige finder på, men det burde give en god ide til hvordan det vil virke.
----- $time = time(); mysql_query("insert into BRUGER_DATABASE (online_time) values ('$time') where id='$BRUGER_ID'") -----
På brugers profil: ----- $is_online_time = time()-(60*15); // brugeren er online hvis der er regisreret timestamp indenfor 15 min
$res = mysql_query("select online_time from BRUGER_DATABASE where id='$BRUGER_ID'"); $row = mysql_fetch_assoc($res); if ($row[online_time] >=$is_online_time) { print "bruger online"; } else { print "bruger offline"; } -----
Jeg kan godt skrive lidt mere til koden. $time stykket skal være på alle sider (sæt evt. i en fil der bliver inkluderet på hver side), og kør kun koden hvis det er en bruger der er logget ind, ikke bare en almindelig besøgende.
Sådan noget her:
if ($BRUGER_ER_LOGGET_IND) { $time = time(); mysql_query("insert into BRUGER_DATABASE (online_time) values ('$time') where id='$BRUGER_ID'") }
denne side bliver includeret på alle sider, når man er logget ind, kan du ikke ændre sidekoden så den sender til db (c_users)? <?php $servername = "localhost"; //Skift ikke hvis din host ikke har givet dig en anden $dbusername = ""; //Dit MySQL brugernavn $dbpassword = ""; //Dit MySQL password $dbname = ""; //MySQL databasenavn $dbtable = "c_users"; //Hovedtabel navn
$connection = mysql_connect("$servername","$dbusername","$dbpassword") or die("Kunne ikke forbinde til MySQL"); $result = mysql_select_db("$dbname",$connection) or die("Kunne ikke forbinde til databasen"); ?>
Er du sikker på det er den rigtige fil? Det ligner ret meget en fil til at oprette en ny bruger. Ellers er det i hvert fald lidt rodet lavet hvis den skal inkludere den funktion her gang. Men pyt med det.
Der skal være en form for login funktion der efterfølgende tjekker om den besøgende der er på siden har logget sig ind.
Du skal lave en funktion i toppen af hver side, så laver følgende:
//Er brugeren logget ind. //Forbinder til mysql. mysql_query(REPLACE online_tabel SET userid = $_SESSION['user'], action=NOW()");
Så vil brugeren som besøger en side, altid have id og tiden lige nu gemt i en tabel. Så er det "bare" at trække info ud. F.eks.: mysql_query("SELECT * FROM online_tabel WHERE DATE_ADD(action, INTERVAL 10 MINUTE) > NOW()");
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.