PDA

View Full Version : سوال: آمار گیر



engmmrj
جمعه 06 مرداد 1391, 17:04 عصر
سلام بچه ها
من کد یک آمار گیر خوب می خوام که تو سایتم ازش استفاده کنم میشه راهنماییم کنید.

soroush.r70
شنبه 07 مرداد 1391, 15:19 عصر
یه آمار گیر خوب بدون نیاز به دیتابیس

اینا رو می ذاری داخل یه فایل php و ذخیره می کنی

////////////////////////////////////نمایش تعداد بازدید امروز دیروز و کل/////////////////////////////////////////////
$fh=fopen('soroushamar.txt', 'r+b');
flock($fh, LOCK_EX);
list($today, $yesterday, $total, $timestamp) = explode("\n", fread($fh, 2000));
$total = (int)$total + 1;
$today_date = getdate();
$last_date = getdate((int)$timestamp);
if( $today_date['yday'] == $last_date['yday'])
{
$today = (int)$today +1;
}
else
{
$yesterday = (int)$today + 1;
$today = 1;
$total++;
}
$timestamp = time();
$yesterday = (int)$yesterday;
ftruncate($fh, 0);
fseek($fh, 0);
fwrite($fh, $today."\n".$yesterday."\n".$total."\n".$timestamp );
flock($fh, LOCK_UN);
fclose($fh);
///////////////////////////////////////////تاریخ روز////////////////////////////////////////////////////////////////////////
$shamsi_date = get_jalali_date2();
//////////////////////////////////////////آی پی کاربر////////////////////////////////////////////////////////////////////
function getRealIpAddr()
{
if (!empty($_SERVER['HTTP_CLIENT_IP']))
//check ip from share internet
$ip=$_SERVER['HTTP_CLIENT_IP'];
elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR']))
//to check ip is pass from proxy
$ip=$_SERVER['HTTP_X_FORWARDED_FOR'];
else
$ip=$_SERVER['REMOTE_ADDR'];

return $ip;
}
$ip = getRealIpAddr();
////////////////////////////////تعداد مطالب وب سایت///////////////////////////////////
$totalpaper=mysql_result(mysql_query('select count(*) as `total` from `tbl_paper`'),0,0);
////////////////////////////////تعداد کاربران جاری///////////////////////////////////
$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&auml;hlt, daher hier abbruch
$ignore = true;
break;
}
}
// counter hochz&auml;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
$online = 1;
}
else
{
// counter hochz&auml;hlen
list($record, $record_time) = explode("||", $c_file[0]);
// neuer record?
$record_time = trim($record_time);
if ($day > $record)
{
$record = $day;
$record_time = $current_time;
}
// speichern und aufr&auml;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);
$record_time = trim($record_time);
$online = sizeof($c_file) - 1;
}
}
////////////////////////////////////////////////////////////////////////////////



بعد میای فایل رو فراخوانی می کنی و اینطوری آمار رو نشون می دی


<ul dir="rtl">
<li>تاسیس : <b dir="ltr" class="textbold">1391/7/1</b></li>
<li>تعداد مطالب : <b class="textbold"> <?php echo number_format($totalpaper);?></b></li>
<li>به روز شده در : <b class="textbold"> <?php echo $shamsi_date; ?></b></li>
<li>IP شما : <b class="textbold"> <?php echo $ip; ?></b></li>
<li>تعداد کاربران جاری : <b class="textbold"><?php echo number_format($online); ?></b></li>
<li>تعداد بازدید امروز : <b class="textbold"><?php echo number_format($today); ?></b></li>
<li>تعداد بازدید دیروز : <b class="textbold"><?php echo number_format($yesterday); ?></b></li>
<li>تعداد بازدید کل : <b class="textbold"> <?php echo number_format($total); ?></b></li>
</ul>

soroush.r70
شنبه 07 مرداد 1391, 15:21 عصر
یه آمار گیر خوب بدون نیاز به دیتابیس

اینا رو می ذاری داخل یه فایل php و ذخیره می کنی

////////////////////////////////////نمایش تعداد بازدید امروز دیروز و کل/////////////////////////////////////////////
$fh=fopen('soroushamar.txt', 'r+b');
flock($fh, LOCK_EX);
list($today, $yesterday, $total, $timestamp) = explode("\n", fread($fh, 2000));
$total = (int)$total + 1;
$today_date = getdate();
$last_date = getdate((int)$timestamp);
if( $today_date['yday'] == $last_date['yday'])
{
$today = (int)$today +1;
}
else
{
$yesterday = (int)$today + 1;
$today = 1;
$total++;
}
$timestamp = time();
$yesterday = (int)$yesterday;
ftruncate($fh, 0);
fseek($fh, 0);
fwrite($fh, $today."\n".$yesterday."\n".$total."\n".$timestamp );
flock($fh, LOCK_UN);
fclose($fh);
///////////////////////////////////////////تاریخ روز////////////////////////////////////////////////////////////////////////
$shamsi_date = get_jalali_date2();
//////////////////////////////////////////آی پی کاربر////////////////////////////////////////////////////////////////////
function getRealIpAddr()
{
if (!empty($_SERVER['HTTP_CLIENT_IP']))
//check ip from share internet
$ip=$_SERVER['HTTP_CLIENT_IP'];
elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR']))
//to check ip is pass from proxy
$ip=$_SERVER['HTTP_X_FORWARDED_FOR'];
else
$ip=$_SERVER['REMOTE_ADDR'];

return $ip;
}
$ip = getRealIpAddr();
////////////////////////////////تعداد مطالب وب سایت///////////////////////////////////
$totalpaper=mysql_result(mysql_query('select count(*) as `total` from `tbl_paper`'),0,0);
////////////////////////////////تعداد کاربران جاری///////////////////////////////////
$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&auml;hlt, daher hier abbruch
$ignore = true;
break;
}
}
// counter hochz&auml;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
$online = 1;
}
else
{
// counter hochz&auml;hlen
list($record, $record_time) = explode("||", $c_file[0]);
// neuer record?
$record_time = trim($record_time);
if ($day > $record)
{
$record = $day;
$record_time = $current_time;
}
// speichern und aufr&auml;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);
$record_time = trim($record_time);
$online = sizeof($c_file) - 1;
}
}
////////////////////////////////////////////////////////////////////////////////



بعد میای فایل رو فراخوانی می کنی و اینطوری آمار رو نشون می دی


<ul dir="rtl">
<li>تاسیس : <b dir="ltr" class="textbold">1391/7/1</b></li>
<li>تعداد مطالب : <b class="textbold"> <?php echo number_format($totalpaper);?></b></li>
<li>به روز شده در : <b class="textbold"> <?php echo $shamsi_date; ?></b></li>
<li>IP شما : <b class="textbold"> <?php echo $ip; ?></b></li>
<li>تعداد کاربران جاری : <b class="textbold"><?php echo number_format($online); ?></b></li>
<li>تعداد بازدید امروز : <b class="textbold"><?php echo number_format($today); ?></b></li>
<li>تعداد بازدید دیروز : <b class="textbold"><?php echo number_format($yesterday); ?></b></li>
<li>تعداد بازدید کل : <b class="textbold"> <?php echo number_format($total); ?></b></li>
</ul>

engmmrj
یک شنبه 08 مرداد 1391, 13:45 عصر
عمل نمی کنه ایراد داره

soroush.r70
دوشنبه 09 مرداد 1391, 13:35 عصر
دو تا فایل رو درست کردی counter.txt soroushamar.txt

engmmrj
سه شنبه 10 مرداد 1391, 15:58 عصر
درست کردم،ولی توش خالی است
همچین ایرادی میگیره
Parse error: syntax error, unexpected '$today_date' (T_VARIABLE) in F:\EasyPHP-12.0\home\mehdi\amar.php on line 9

رضا قربانی
دوشنبه 20 شهریور 1391, 19:06 عصر
درست کردم،ولی توش خالی است
همچین ایرادی میگیره
Parse error: syntax error, unexpected '$today_date' (T_VARIABLE) in F:\EasyPHP-12.0\home\mehdi\amar.php on line 9
من کد این دوست خوبمون که خیلی هم بدردبخوره رو براتون آماده کردم که می تونید از فایل ضمیمه دانلودش کنید :

tehro0n
دوشنبه 20 شهریور 1391, 20:30 عصر
اگه آمارگیر حرفه ای هم می خوای می تونی از سایت ToolsIR.com (http://www.toolsir.com/counter/) بگیری، اسکریپته ولی ارزشش رو داره ( هر مدل نحوه نمایش آمار که بخوای توش هست)
طراحش هم تو همین فروم عضوه فعاله!

رضا قربانی
دوشنبه 20 شهریور 1391, 23:33 عصر
اگه آمارگیر حرفه ای هم می خوای می تونی از سایت ToolsIR.com (http://www.toolsir.com/counter/) بگیری، اسکریپته ولی ارزشش رو داره ( هر مدل نحوه نمایش آمار که بخوای توش هست)
طراحش هم تو همین فروم عضوه فعاله!
خب اگر کسی بخواد به این صورت اقدام کنه وبگذر حرف اول رو میزنه

tehro0n
دوشنبه 20 شهریور 1391, 23:44 عصر
فکر نمی کنی وبگذر محدود تر از این ابزاره!
خصوصی کردن اطلاعات هر قسمت و نمایش های مختلف آمار در صفحه سایت!
+ این که من این ابزار رو کنار وبگذر امتحان کردم، هر دو کد کنار هم در صفحه گذاشتم که نگیم کاربر وسط لود خارج شد و ..
آمار ورودی جستجوگر ها و نمایش آن های در وبگذر 60% چیزی هست که در تولز آی آر نمایش میده، همچنین بازدیدکنندگان کمتری هم در وبگذر می بینیم!
من که می گم سیستم toolsIR قوی تر از وبگذره

barnamenevisaz
چهارشنبه 08 آذر 1391, 22:29 عصر
من کد این دوست خوبمون که خیلی هم بدردبخوره رو براتون آماده کردم که می تونید از فایل ضمیمه دانلودش کنید :

دمت گرم داداش

به درد من خیلی خورد

فقط دو چیز کم داره

1. بازدید هفته
2. بازدید ماه پیش

اگه کدش راحت هست برای من بنویسید خیلی کارم را راه می اندازه

barnamenevisaz
چهارشنبه 08 آذر 1391, 22:40 عصر
دمت گرم داداش

به درد من خیلی خورد

فقط دو چیز کم داره

1. بازدید هفته
2. بازدید ماه پیش

اگه کدش راحت هست برای من بنویسید خیلی کارم را راه می اندازه


البته مشکل دیگری هم داره که تازه پی بردم

و آن این هست که افراد آنلاین را درست نمایش نمیده !!!

خواهشا این بخش رو اگه کسی وارد هست درست بکنه

ممنون

tehro0n
پنج شنبه 09 آذر 1391, 16:58 عصر
به نظر من اگه برای افراد آنلاین از سیژن استفاده کنید خیلی بهتره
چقدر هم الکی الگوریتم رو پیچیده کرده :لبخند: سرم گیج رفت

hidensoft
پنج شنبه 09 آذر 1391, 20:22 عصر
سشن البته.

tehro0n
جمعه 10 آذر 1391, 19:44 عصر
اگه خیلی بیشتر به تلفظ اهمیت میدید تا محتوا، سیشن یا سشین البته.