Gå til innhold

PHP > Aktive brukere på en side


Anbefalte innlegg

Videoannonse
Annonse
Skrevet (endret)
<?php
 	//
 	// USERS ONLINE
 	//
 	$timer = 2;
 	$filename = "data/online.txt";

 	if (!$datei) $datei = dirname(__FILE__)."/$filename";
 	$time = @time();
 	$ip = $REMOTE_ADDR;
 	$string = "$ip|$time\n";
 	$a = fopen("$filename", "a+");
 	fputs($a, $string);
 	fclose($a);

 	$timeout = time()-(60*$timer);

 	$all = "";
 	$i = 0;
 	$datei = file($filename);
 	for ($num = 0; $num < count($datei); $num++) {
      $pieces = explode("|",$datei[$num]);

          if ($pieces[1] > $timeout) {
              $all .= $pieces[0];
              $all .= ",";
          }
      $i++;
 	}
 	$all = substr($all,0,strlen($all)-1);

 	$arraypieces = explode(",",$all);

 	$useronline = count(array_flip(array_flip($arraypieces)));

 	if ($useronline == 0) {
      $useronline = 1;
 	}
 	echo "$useronline";

 	$dell = "";
 	for ($numm = 0; $numm < count($datei); $numm++) {
      $tiles = explode("|",$datei[$numm]);
          if ($tiles[1] > $timeout) {
              $dell .= "$tiles[0]|$tiles[1]";
          }
 	}
 	
 	if (!$datei) $datei = dirname(__FILE__)."/$filename";
 	$time = @time();
 	$ip = $REMOTE_ADDR;
 	$string = "$dell";
 	$a = fopen("$filename", "w+");
 	fputs($a, $string);
 	fclose($a);
 	?>

Endret av Stale2k
Skrevet

Takk, men jeg fikk den maks opp i et tall som var 1, selv ikke med to pc'er telte den 2 :( hva er feil?

 

 

<?php
 //
 // USERS ONLINE
 //
 $timer = 2;
 $filename = "data/online.txt";

 if (!$datei) $datei = dirname(__FILE__)."/$filename";
 $time = @time();
 $ip = $REMOTE_ADDR;
 $string = "$ip|$time\n";
 $a = fopen("$filename", "a+");
 fputs($a, $string);
 fclose($a);

 $timeout = time()-(60*$timer);

 $all = "";
 $i = 0;
 $datei = file($filename);
 for ($num = 0; $num < count($datei); $num++) {
     $pieces = explode("|",$datei[$num]);

         if ($pieces[1] > $timeout) {
             $all .= $pieces[0];
             $all .= ",";
         }
     $i++;
 }
 $all = substr($all,0,strlen($all)-1);

 $arraypieces = explode(",",$all);

 $useronline = count(array_flip(array_flip($arraypieces)));

 if ($useronline == 0) {
     $useronline = 1;
 }
 echo "$useronline";

 $dell = "";
 for ($numm = 0; $numm < count($datei); $numm++) {
     $tiles = explode("|",$datei[$numm]);
         if ($tiles[1] > $timeout) {
             $dell .= "$tiles[0]|$tiles[1]";
         }
 }
 
 if (!$datei) $datei = dirname(__FILE__)."/$filename";
 $time = @time();
 $ip = $REMOTE_ADDR;
 $string = "$dell";
 $a = fopen("$filename", "w+");
 fputs($a, $string);
 fclose($a);
 ?>

Skrevet (endret)
Her har du en script som gjør det, husk at scriptet skal ha skriverettigheter for filen "online.odt".

7565386[/snapback]

 

 

Takker dette er faktiskt det eneste som har virket så langt :thumbup: på lokalt

 

men når jeg lasta det opp på min "supre" start server fikk jeg feilmeldingen: Parse error: parse error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in /home/a/al/alemoh/public_html/hmm/online.php on line 14 :( hva er galt.. line 14 inneholder public $pers_online;

 

resten er

<?php

/**
 * @name  	Brukere online
 * @Desc  	Sjekker brukere online
 * @param  	$filename, $time
 * @copyright  OXODesign TEAM
 * @author  	OXODesign
 * Web:  	http://www.oxo-design.net
 * @version  1.0
 */
class cl_online {
 
 public $pers_online;
 private $filename = "online.odt"; 
 private $time = 1; # Sett periode i minutter
 
 /**
  * @name func_update_file
  * Oppdaterer fila med ny ip adresse og klokkeslett
  */
 function func_update_file(){
 	
 	$get_ip = $_SERVER['REMOTE_ADDR'];
 	$time_now = time();
 	$input_str = $get_ip . "," . $time_now . "\r\n";
 	
 	$update_file =  fopen($this->filename, "a+");
     	fwrite($update_file,$input_str);
     	fclose($update_file);
 	
 }
 
 /**
  * @name func_check_ip
  * Sjekker om ip-adressen har vært online siste x antall min.
  */
 function func_check_ip(){
 	$read_file = file($this->filename);
 	
 	$online = false;
 	$get_ip = $_SERVER['REMOTE_ADDR'];
 	
 	foreach ($read_file as $val){
   $explode_val = explode(",", $val);
   $user_ip = $explode_val[0];
   $user_time = $explode_val[1];
   $make_time = time() - ($this->time * 60);
   
   if ($user_time >= $make_time) {
   	if ($user_ip == $get_ip)
     $online = true;
   }
 	}
 	
 	if (!$online)
   $this->func_update_file();
 }
 
 /**
  * @name func_read_file
  * Leser filen, går gjennom den og sjekker siste personene som har vært online.
  * @return Brukere online
  */
 function func_read_file(){
 	$read_file = file($this->filename);
 	$this->pers_online = 0;
 	
 	foreach ($read_file as $val){
   $explode_val = explode(",", $val);
   $user_ip = $explode_val[0];
   $user_time = $explode_val[1];
   
   $make_time = time() - ($this->time * 60);
   if ($user_time >= $make_time) {
   	$this->pers_online += 1;
   }
 	}
 	return $this->pers_online;
 }
 
 
}

$online = new cl_online;
$online->func_check_ip();
echo "Brukere online: " . $online->func_read_file();

?>

Endret av The_Lozer

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å
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...