اسکریپت آمار سایت

setare66

تازه وارد
27/9/10
55
0
6
سلام

من یه اسکریپت آمار سایت ساده می خوام ؛

با php یا با جاوا باشه ، اگر با php باشه که بهتره

خودم سرچ کردم و یکی پیدا کردم ولی نمی دونم چطوری باید ازش استفاده کنم

اگر می تونین در مورد همین راهنماییم کنین یا خودتون یکی رو معرفی کنین.

ممنون

اینم کدش:


کد:
<?php $expire = 1;
$filename = "counter.txt";

if (file_exists($filename)) 
{
   $ignore = false;
   $current_agent = (isset($_SERVER['HTTP_USER_AGENT'])) ? addslashes(trim($_SERVER['HTTP_USER_AGENT'])) : "no agent";
   $current_time = time();
   $current_ip = $_SERVER['REMOTE_ADDR']; 

   // daten einlesen
   $c_file = array();
   $handle = fopen($filename, "r");

   if ($handle)
   {
      while (!feof($handle)) 
      {
         $line = trim(fgets($handle, 4096)); 
         if ($line != "")
            $c_file[] = $line;          
      }
      fclose ($handle);
   }
   else
      $ignore = true;

   // bots ignorieren   
   if (substr_count($current_agent, "bot") > 0)
      $ignore = true;


   // hat diese ip einen eintrag in den letzten expire sec gehabt, dann igornieren?
   for ($i = 1; $i < sizeof($c_file); $i++)
   {
      list($counter_velip, $counter_veltime) = explode("||", $c_file[$i]);
      $counter_veltime = trim($counter_veltime);

      if ($counter_velip == $current_ip && $current_time-$expire < $counter_veltime)
      {
         // besucher wurde bereits gezählt, daher hier abbruch
         $ignore = true;
         break;
      }
   }

   // counter hochzählen
   if ($ignore == false)
   {
      if (sizeof($c_file) == 0)
      {
         // wenn counter leer, dann füllen      
         $add_line1 = date("z") . ":1||" . date("W") . ":1||" . date("n") . ":1||" . date("Y") . ":1||1||1||" . $current_time . "\n";
         $add_line2 = $current_ip . "||" . $current_time . "\n";

         // daten schreiben
         $fp = fopen($filename,"w+");
         if ($fp)
         {
            flock($fp, LOCK_EX);
            fwrite($fp, $add_line1);
            fwrite($fp, $add_line2);
            flock($fp, LOCK_UN);
            fclose($fp);
         }

         // werte zur verfügung stellen
         $day = $week = $month = $year = $all = $record = 1;
         $record_time = $current_time;
         $online = 1;
      }
      else
      {
         // counter hochzählen
         list($day_arr, $week_arr, $month_arr, $year_arr, $all, $record, $record_time) = explode("||", $c_file[0]);

         // day
         $day_data = explode(":", $day_arr);
         $day = $day_data[1];
         if ($day_data[0] == date("z")) $day++; else $day = 1;

         // week
         $week_data = explode(":", $week_arr);
         $week = $week_data[1];
         if ($week_data[0] == date("W")) $week++; else $week = 1;

         // month
         $month_data = explode(":", $month_arr);
         $month = $month_data[1];
         if ($month_data[0] == date("n")) $month++; else $month = 1;

         // year
         $year_data = explode(":", $year_arr);
         $year = $year_data[1];
         if ($year_data[0] == date("Y")) $year++; else $year = 1;

         // all
         $all++;

         // neuer record?
         $record_time = trim($record_time);
         if ($day > $record)
         {
            $record = $day;
            $record_time = $current_time;
         }

         // speichern und aufräumen und anzahl der online leute bestimmten

         $online = 1;

         // daten schreiben
         $fp = fopen($filename,"w+");
         if ($fp)
         {
            flock($fp, LOCK_EX);
            $add_line1 = date("z") . ":" . $day . "||" . date("W") . ":" . $week . "||" . date("n") . ":" . $month . "||" . date("Y") . ":" . $year . "||" . $all . "||" . $record . "||" . $record_time . "\n";         
            fwrite($fp, $add_line1);

            for ($i = 1; $i < sizeof($c_file); $i++)
            {
               list($counter_velip, $counter_veltime) = explode("||", $c_file[$i]);

               // übernehmen
                  if ($current_time-$expire < $counter_veltime)
               {
                  $counter_veltime = trim($counter_veltime);
                  $add_line = $counter_velip . "||" . $counter_veltime . "\n";
                  fwrite($fp, $add_line);
                  $online++;
               }
            }
            $add_line = $current_ip . "||" . $current_time . "\n";
            fwrite($fp, $add_line);
            flock($fp, LOCK_UN);
            fclose($fp);
         }
      }
   }
   else
   {
      // nur zum anzeigen lesen
      if (sizeof($c_file) > 0)
         list($day_arr, $week_arr, $month_arr, $year_arr, $all, $record, $record_time) = explode("||", $c_file[0]);
      else
         list($day_arr, $week_arr, $month_arr, $year_arr, $all, $record, $record_time) = explode("||", date("z") . ":1||" . date("W") . ":1||" . date("n") . ":1||" . date("Y") . ":1||1||1||" . $current_time);

      // day
      $day_data = explode(":", $day_arr);
      $day = $day_data[1];

      // week
      $week_data = explode(":", $week_arr);
      $week = $week_data[1];

      // month
      $month_data = explode(":", $month_arr);
      $month = $month_data[1];

      // year
      $year_data = explode(":", $year_arr);
      $year = $year_data[1];

      $record_time = trim($record_time);

      $online = sizeof($c_file) - 1;
   }
?>
<table cellspacing="0" cellpadding="0">
  <tr> 
    <td  dir="rtl" style="font-family:tahoma;font-size:8pt;"> 

      » افراد آن لاين:<? echo $online; ?> <br>
      »  بازديدهاي امروز:<? echo $day; ?> <br>
      » بازديدهاي هفته:<? echo $week; ?>  <br>
      » بازديدهاي ماه: <? echo $month; ?> <br>
      » بازديدهاي سال:<? echo $year; ?>  <br>
      » بازديدهاي كل:<? echo $all; ?> 

      </td>
  </tr>
</table>
<?
}?>
 

iranenaz

کاربر عضو
28/12/08
502
0
16
چندتا معرفی شده

فکر کنم بد نباشه.

واسه این کدی هم که گذاشتید یک فایل با نام counter.txt در کنار کد قرار بدید (یا مثلا در روت سایتتون بذارید ودر خط 2 مسیرش رو اینطوری تغییر بدید


کد:
$filename = "http://yourdomain/counter.txt";
دسترسی counter.txt رو 766 یا 777 قرار بدید.

کد رو در سایتتون هرجا دوست دارید قرار بدید.

(دقت کنید کد در تمام صفحات باشه)

واستون گذاشتم ببینید.

موفق باشید

 

aminpidofsh

تازه وارد
5/1/10
16
0
1
سلام!

در چه حدی میخوای باشه؟

رو فایل باشه یا دیتابیس؟

اگر خواستی اطلاعات کافی رو بده که چه امکاناتی داشته باشه...برات قرار میدم یا مینویسم...

موفق باشی

 

setare66

تازه وارد
27/9/10
55
0
6
می خوام بازدید امروز و بازدید کل، تعداد اعضای آنلاین رو نشون بده

از روی فایل باشه

ممنون

 

aminpidofsh

تازه وارد
5/1/10
16
0
1
یادمه یه بار بچه های همین انجمن یه پک آمارگیر گذاشته بودن...

میذارم امیدوارم که بدردت بخوره...



 

iranenaz

کاربر عضو
28/12/08
502
0
16
گاهی اوقات انتظار بیشتر هست از دوستان. این مشخص هست که اینجا کسی واسه تشکر کاری نمی کنم اما واسه پاسخ به سوالات ، آپلود و آموزشها و .. یه عکس العملی صورت بگیره بد نیست .اقل کم بزنید این بدرد نمی خوره تا طرف دلش خوش باشه به اینکه طرف مطلبت رو که واسش وقت گذاشتی ، نگاه کرده / البته این نمونه ای هست از برخورد مغرورانه عده ای از ایرونیا که فکر میکنند دیگران وظیفه دارند...