Gå til innhold

Script som viser hvor mange som er online?


Anbefalte innlegg

Videoannonse
Annonse

hvis du bruker sessions så kan du hente session ID til brukeren med

 

session_id();

 

denne kan du lagre i databasen sammen med tidspunktet siden lastes.

hvis du bruker REPLACE INTO istede for INSERT INTO og har sessions_id'n som primær nøkkelen i tabellen vil posten lagres over de gamle postene.

 

det er umulig å vite hvor mage brukere som er online, men du kan vite hvor mange som har lastet siden de siste 5 minuttene e.l.

 

hvis du har felttypen DATETIME på tids feltet i tabellen din kan du hente ut antall brukere som har lastet siden de sisste 5 minuttene

 

SELECT COUNT(*) AS ant FROM sessions WHERE DATE_ADD(time,INTERVAL 5 MINUTE) > NOW()

Lenke til kommentar
Du trenger jo ikke nødvendigvis bruke en database, hvis du ikke vil det. Siden antall brukere online nok ikke blir det helt store tallet, kan du jo bare lagre dem i en vanlig flat tekstfil.

Og hvordan gjør man det da? :D

Lenke til kommentar

Hvis du har MySQL:

 


CREATE TABLE useronline ( 

    timestamp int(15) DEFAULT '0' NOT NULL, 

    ip varchar(40) NOT NULL, 

    file varchar(100) NOT NULL, 

    PRIMARY KEY (timestamp), 

    KEY ip (ip), 

    KEY file (file) 

);

Legg til dette i databasen.

 

Så putter du dette scriptet hvor du vil at "user online" skal stå:


<?php 

//fill in some basic info

$server = "localhost"; 

$db_user = "username"; 

$db_pass = "password"; 

$database = "users"; 

$timeoutseconds = 300; 



//get the time

$timestamp = time(); 

$timeout = $timestamp-$timeoutseconds; 



//connect to database

mysql_connect($server, $db_user, $db_pass); 



//insert the values

$insert = mysql_db_query($database, "INSERT INTO useronline VALUES

('$timestamp','$REMOTE_ADDR','$PHP_SELF')"); 

if(!($insert)) { 

     print "Useronline Insert Failed > "; 

} 



//delete values when they leave

$delete = mysql_db_query($database, "DELETE FROM useronline WHERE timestamp<$timeout"); 

if(!($delete)) { 

    print "Useronline Delete Failed > "; 

} 



//grab the results

$result = mysql_db_query($database, "SELECT DISTINCT ip FROM useronline WHERE file='$PHP_SELF'"); 

if(!($result)) { 

    print "Useronline Select Error > "; 

} 



//number of rows = the number of people online

$user = mysql_num_rows($result); 





//spit out the results

mysql_close(); 

if($user == 1) { 

print("$user user onlinen"); 

} else { 

print("$user users onlinen"); 

} 

?>

 

lykke til :woot:

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...