Pagina 1 van 1

x users online simpel !!!!

Geplaatst: 24 jun 2003, 03:58
door Erik
hallo,

op vele websites zie je dit tegenwoordig.Ik bedoel het aantal gebruikers dat op de site zit. hoe doen die da ? simpel

Code: Selecteer alles

<?php
$server="localhost";
$db_user="mysql_user";
$db_pass="mysql_pass";
$db="databasename";
$ip=$_SERVER['REMOTE_ADDR'];
$timeoutseconds=300;
$timestamp = time();
$timeout=$timestamp-$timeoutseconds;
mysql_connect($server,$db_user,$db_pass) or die (mysql_error());
mysql_select_db($db);
$insert=mysql_query("INSERT INTO useronline VALUES ('$timestamp','$ip','$PHP_SELF')");
if(!$insert){
   die("useronline insert failed");
}
$delete=mysql_query("DELETE FROM useronline WHERE timestamp<$timeout");
if(!$delete){
   die("could not delete information from the database");
}
$result=mysql_query("SELECT DISTINCT ip FROM useronline WHERE file='$PHP_SELF'");
if(!$result){
   die("database selection error");
}
$user=mysql_num_rows($result);

mysql_close();
if($user ==1) {
   print("<b>$user</b>user online\n");
}else{
   print("<b>$user</b> users online\n");
}
?>


dan moet je een MySQL database table maken

Code: Selecteer alles

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)
);


in elk bestand dat je nu de aantal gebruikers wilt tonen dat online is op de site voeg je dit bestand in eg

Code: Selecteer alles

<?php include("filename.php") ?>


voila ....

Geplaatst: 24 jun 2003, 09:30
door airzimmy
Dat klopt maar er is nooit een site dat het betrouwbaar kan weergeven, het gaat altijd om een tijdspanne van moment x in het verleden tot nu en die tijdspanne kan lang zijn en dus een vertekend beeld geven :)

Geplaatst: 24 jun 2003, 10:26
door Pi R²
ge kunt ervanuit gaan dat de mensen minstens 5 minuten op uwe site blijven rondhangen :wink:

Geplaatst: 24 jun 2003, 12:25
door airzimmy
of ge kunt dat hopen :p

Geplaatst: 24 jun 2003, 22:55
door The Oddity
Is idd wel steeds nogal suggestief, maar kom het is een mooi scriptje van Erik ;-)

Voor realistic data zou ge continuous feed ofzo moeten hebben :)
Stat-counters enzo.. geven ook verkeerd beeld weer eh dan...is ook op moment x eh :)

Er zijn maybe mensen die dat wel kunnen gebruiken op hun site ofzo :).
Of er oplossing voor een ander probleem in zien.

Geplaatst: 24 jun 2003, 23:25
door meon
Bij ASP wordt een sessie gestart van het moment dat ge een pagina opent. Op zo'n systeem zou ge kunnen kijken hoe lang die sessie bestaat, dan hebt ge denk ik een vrij realistisch beeld van het actuele aantal bezoekers.

Geplaatst: 29 aug 2003, 14:46
door Gast
je zou in php ook sessies kunnen gebruiken, en de open sessies tellen. voordeel is dat zo'n sessie reeds voor de timeout kan afgesloten worden, mits de gebruiker zich afmeldt of iets dergelijks.

Geplaatst: 29 aug 2003, 17:14
door meon
Bwa, als je al een vrij correct beeld kan hebben van gebruikers op een site in pakweg de laatste 5 minuten lijkt mij dat toch al meer dan voldoende. Ik kan geen reden bedenken waarom een dergelijke statistiek zó erg nauwkeurig moet zijn dat het écht realtime is.

Geplaatst: 29 aug 2003, 20:17
door Massachusetts
Ik vroeg me al hoe ze dat deden. Allee dan, nu weet ik dat ook hoe ze dat doen.

Geplaatst: 22 okt 2003, 06:53
door Erik
hallo,

hier is een update dat u toelaat de datum en "timestamp" te tonen samen mee het aantal online users helemaal vanboven zet je deze php code

Code: Selecteer alles

$now=date("l dS F Y H:i:s A");


dan waar je de online users toon dit vervang je door

Code: Selecteer alles

if($user ==1) {
   print("<b>$user </b> user online at $now");
}else{
   print("<b>$user</b> users online at  $now");
}



als u meer informatie wilt over het "formateren" van date en of timestamps kan u eens kijken op deze site