alex100 Skrevet 7. mars 2004 Del Skrevet 7. mars 2004 Hei. Hvordan får jeg det til at det står hvor mange som er på siden akkurat nå? F.eks: 2 gjester leser på siden akkurat nå. Finnes det noe enkelt php script til dette? Takk på forhånd. Lenke til kommentar
Torbjørn Skrevet 7. mars 2004 Del Skrevet 7. mars 2004 det finnes ikke noe enkelt skript for det. I prinsipp er det nesten aldri noen på siden din. Idet man trykker linken og har hentet ned siden, kan du umulig vite om de sitter med siden oppe eller om de har lukket den eller surfet videre. du kan legge inn en slags log i en mysqltabell for hvert hit, og kombinert med en cookie kan du kanskje telle antall unike besøkere siste 5 minutene. f.eks. kanskje du finner noe på www.hotscripts.com Lenke til kommentar
alex100 Skrevet 7. mars 2004 Forfatter Del Skrevet 7. mars 2004 Oki. Da så. Takk for svar. Lenke til kommentar
magikern Skrevet 7. mars 2004 Del Skrevet 7. mars 2004 som Torbjørn sier finnes det ikke noen måte å sjekke hvor mange som er på siden din akkurat når du er der, men du kan ved hjelp cookie eller session sjekke opp i mot enten en flatfil eller en db hvor mange som har vært innom iløpet av f.eks de siste 5 minuttene... jeg brukte en gang i tiden denne class'en til å sjekke det på en side: <?php class UsersOnline { /* $ol = new UsersOnline; //REPORTING ONLY $ol = new UsersOnline(false); //get rid of the old records $ol->refresh(); //who is at my site? $ol->printNumber("site"); //who is at this page? $ol->printNumber("?s="); //ADDING A USER, NO REPORTING $ol = new UsersOnline(true); */ var $db; var $page = ""; var $ip = ""; var $timeoutSeconds = 120; function UsersOnline($visitor=true){ $this->db = new db; $this->ip = getip(); $this->page = $_SERVER['PHP_SELF']; if ($visitor) $this->addVisitor(); }//constructor function getNumber($siteOrFile="site"){ $timeout = $this->getTimeOut(); if ($siteOrFile == "site"){ $query = "SELECT DISTINCT ip FROM usersonline WHERE timestamp >= $timeout"; }else{ $query = "SELECT DISTINCT ip FROM usersonline WHERE file='" . $this->page . "' and timestamp >= $timeout"; } if(!$result = $this->db->db_query($query)){ array_push($this->db->drift_errarr, mysql_error()); echo errarr($this->db->drift_errarr); } return $this->db->db_numrows($result); }//getNumber function printNumber($siteOrFile="site"){ echo $this->getNumberInfo($siteOrFile); }//printNumber function getNumberInfo($siteOrFile="site"){ // I use templates so I just want to get the string and pass it to // my template object $cnt = $this->getNumber($siteOrFile); if( $cnt == 1){ $output = "$cnt Bruker på siden"; }else{ $output = "$cnt Brukere på siden"; } return $output; }//getNumberInfo function refresh() { global $REMOTE_ADDR, $PHP_SELF; $timeout = $this->getTimeOut(); $query = "DELETE FROM usersonline WHERE timestamp < $timeout"; if(!$result = $this->db->db_query($query)){ array_push($this->db->drift_errarr, mysql_error()); echo errarr($this->db->drift_errarr); } }//refresh function getTimeOut(){ $currentTime = time(); return $currentTime - $this->timeoutSeconds; }//getTimeOut function addVisitor(){ global $REMOTE_ADDR, $PHP_SELF; $currentTime = time(); $query = "INSERT INTO usersonline VALUES ('$currentTime','" . $this->ip . "','" . $this->page . "')"; if(!$result = $this->db->db_query($query)){ array_push($this->db->drift_errarr, mysql_error()); echo errarr($this->db->drift_errarr); } }//addVisitor }//class UsersOnline ?> den krever class.db.php <?php class db { var $db_type; var $db_server; var $db_name; var $db_user; var $db_pass; var $db_persistent; var $dbh; var $drift_errarr; function db() { $this->db_type = 1; $this->db_server = 'localhost'; $this->db_name = 'online'; $this->db_user = 'root'; $this->db_pass = 'xxxXXXxxx'; $this->db_persistent = 0; $this->db_connect(); } //end constructor function db_connect () { // mySQL $this->drift_errarr = array(); if($this->db_type == 1) { if ($this->db_persistent) $this->dbh = @mysql_pconnect($this->db_server, $this->db_user, $this->db_pass); else $this->dbh = @mysql_connect($this->db_server, $this->db_user, $this->db_pass); if (!$this->dbh) { array_push($this->drift_errarr,mysql_error()); echo errarr($this->drift_errarr); return; } if (!@mysql_select_db($this->db_name, $this->dbh)) { array_push($this->drift_errarr,mysql_error()); echo errarr($this->drift_errarr); return; } } //end mySQL } //end db_connect() function db_query ($query) { // mySQL $this->drift_errarr = array(); if($this->db_type == 1) { $result = mysql_query($query, $this->dbh); if(!$result){ array_push($this->drift_errarr,mysql_error()); echo errarr($this->drift_errarr); return; } return $result; } //end mySQL } //end db_query() function db_numrows ($result) { switch($this->db_type) { case 1: //mySQL return mysql_num_rows($result); } //end switch } // end db_numrows() function db_fetch_array (&$result) { switch($this->db_type) { case 1: //mySQL return mysql_fetch_array($result); } //end switch } //end db_fetch_array() } //end class db ?> og en tabell i db din med : id int(10) No auto_increment ip varchar(15) No timestamp varchar(15) No page varchar(255) No Lenke til kommentar
RipZ- Skrevet 7. mars 2004 Del Skrevet 7. mars 2004 Om man ikke deler sessionkatalog med noen andre (som er ganske vanlig hos gratishoster og enkelte betalingshoster) kan man telle antall sessionfiler. Om man f.eks setter levetiden til en session til fem minutter, så kan man telle antall sessionfiler og dermed anta hvor mange som har besøkt siden de siste fem minuttene. www.sindrem.com skal ha et liknede eksempel på siden sin. Lenke til kommentar
The Red Devil Skrevet 8. mars 2004 Del Skrevet 8. mars 2004 Den vanligste måten å finne besøkende tipper eg er med "database session", og deretter telle opp aktive sessions. I.e. du forandrer dei innebygde session commandoene til å bruke ein database istedenfor den vanlige lagrings plassen. Ein til fordel med denne måten er at du lettere kan forhindre session exploits. Lenke til kommentar
???????? Skrevet 8. mars 2004 Del Skrevet 8. mars 2004 Man trenger ikke sessions eller egene session handlers for å telle antall besøkende på en side - bare lag en teller som lagrer side som vises, ip og annen data du ønsker. Så teller du bare forskjellige ipadresser f.eks. de siste 5 minuttene. Etterhvert kan du beregne tiden en side vises (hvis du har f.eks. et timestamp felt) så kan du bruke den tiden isteden for 5 minutter. Bygger man en litt seriøs side vil man jo gjerne ha en teller for å vite hvor mange som besøker siden og hvor mange sider som vises, så det er bare å bruke den. Lenke til kommentar
hwlars Skrevet 8. mars 2004 Del Skrevet 8. mars 2004 http://www.smartisoft.com/download.php?pro...b3e641573c07e9c Lenke til kommentar
The Red Devil Skrevet 9. mars 2004 Del Skrevet 9. mars 2004 ????????: Jo, seff. Men eg meiner det igrunnen er like greit å slå to fluer i ein smekk, ved å bruke costum sessions. Bedre sikkerhet + kan sjekke kor mange som er online til kvar tid. Lenke til kommentar
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå