webForumDet fria alternativet

Räkna unika besökare

PHP

0 svar · 222 visningar · startad av DAAAAANIEL

Medlem sedan feb. 200524 inlägg
Frågan#1

Jag har ETT problem som kvarstår. Jag vill skriva ut:

Aktiva besökare: antal st
Totalt: antal st

Här är php-koden.

<?php 
// Konfiguration 
$dbhost = "xxx"; // MySQL host 
$dbuser = "xxx"; // MySQL Användarnamn 
$dbpass = "xxx"; // MySQL Lösenord 
$dbname = "xxx"; // Databasnamn 
$timesession=1200; //Antagen sessionstid 

$timestamp=time(); // Aktuell inloggningstid 
$today=date("d"); // Dagens nummer (0-31) 
$ip = substr($REMOTE_ADDR, 0, strrpos($REMOTE_ADDR,".")); 

// Ansluter till MySQL Databasen 
$conn = mysql_connect($dbhost,$dbuser,$dbpass) or exit(mysql_error()); 
$rs=mysql_select_db($dbname,$conn) or die('Anslutningen till databasen fungerar ej!'); 

$sql=('select * from usercountertoday'); // Hämtar data ifrån tabellen 
$rs=mysql_query($sql, $conn) or die ('Anslutningen till den specifika databastabellen fungerar ej!'); 

if (mysql_num_rows($rs) !== 0) 
  { 
    while($data=mysql_fetch_array($rs)) // Lägger datan i en array 
      { 
        $ipcheck=$data[0]; // Hämtar ip-nummer 
        $timecheck=$data[2]; // Hämtar inloggningstid 
        $hitcheck=$data[3]; // Hämtar antalet träffar 
          if($ip==$ipcheck) // Kontrollerar om besökande ip är identiskt med tidigare ip 
            { 
              if(time()>$timecheck+$timesession) // Kontrollerar så det gått t.ex. 20 minuter mellan inloggningarna 
                { 
                  $hit=$hitcheck+"1"; // Lägger till en träff 
                  $sql=("update usercountertoday set time='$timestamp', hits='$hit' where ipnr='$ip'"); // Uppdaterar raden där ip-nummret överensstämmer 
                  $res=mysql_query($sql, $conn) or die ('Anslutningen vid uppdatering av databasen fungerar ej!'); 
                } 
            } 
          else 
            { 
              $newhit="1"; // Om ip inte överensstämmer 
              $sql=("insert into usercountertoday (ipnr,day,time,hits) values ('$ip','$today','$timestamp','$newhit')"); // Lägger till ny rad med info 
              $res=mysql_query($sql, $conn) or die ('Anslutningen vid skrivning till databasen fungerar ej!'); 
            } 
      } 
  } 
else 
  { 
    $newhit="1"; // Om ip inte överensstämmer 
    $sql=("insert into usercountertoday (ipnr,day,time,hits) values ('$ip','$today','$timestamp','$newhit')"); 
    $res=mysql_query($sql, $conn) or die ('Anslutningen vid skrivning till databasen fungerar ej!'); // Lägger till ny rad med info 
  } 

// Kontrollerar datum på usercountertoday & total 
$totalhit = mysql_query('select sum(hits) as tothit from usercountertoday'); 
$count = mysql_result($totalhit, 0); // Beräknar hur många träffar som finns registrerade i usercountertoday 

$result = mysql_query('select * from usercountertotal'); // Hämtar dag och totala träffar i usercountertotal 
$col = mysql_fetch_array($result, MYSQL_NUM); 
$totalday = $col[0]; 
$totalsum = $col[1]; 

if ($totalday != $today) // Om dagens datum, radera today samt total 
  { 
    mysql_query("delete from usercountertoday where day='$totalday'"); 
    mysql_query("delete from usercountertotal where day='$totalday'"); 
    $totalsum += $count;// Summerar träffarna ifrån total och today 
    mysql_query("insert into usercountertotal(day,total) values('$today','$totalsum')"); // Lägger in aktuell dag och nya träffar i total 
  } 

mysql_free_result($result); 
mysql_close(); 
?>
259 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
127 ms — deklarationer (db)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)
123 ms — ändringar (db)