سلام بچه ها
من کد یک آمار گیر خوب می خوام که تو سایتم ازش استفاده کنم میشه راهنماییم کنید.
سلام بچه ها
من کد یک آمار گیر خوب می خوام که تو سایتم ازش استفاده کنم میشه راهنماییم کنید.
یه آمار گیر خوب بدون نیاز به دیتابیس
اینا رو می ذاری داخل یه فایل 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ä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
$online = 1;
}
else
{
// counter hochzä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ä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>
یه آمار گیر خوب بدون نیاز به دیتابیس
اینا رو می ذاری داخل یه فایل 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ä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
$online = 1;
}
else
{
// counter hochzä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ä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>
عمل نمی کنه ایراد داره
دو تا فایل رو درست کردی counter.txt soroushamar.txt
درست کردم،ولی توش خالی است
همچین ایرادی میگیره
Parse error: syntax error, unexpected '$today_date' (T_VARIABLE) in F:\EasyPHP-12.0\home\mehdi\amar.php on line 9
اگه آمارگیر حرفه ای هم می خوای می تونی از سایت ToolsIR.com بگیری، اسکریپته ولی ارزشش رو داره ( هر مدل نحوه نمایش آمار که بخوای توش هست)
طراحش هم تو همین فروم عضوه فعاله!
فکر نمی کنی وبگذر محدود تر از این ابزاره!
خصوصی کردن اطلاعات هر قسمت و نمایش های مختلف آمار در صفحه سایت!
+ این که من این ابزار رو کنار وبگذر امتحان کردم، هر دو کد کنار هم در صفحه گذاشتم که نگیم کاربر وسط لود خارج شد و ..
آمار ورودی جستجوگر ها و نمایش آن های در وبگذر 60% چیزی هست که در تولز آی آر نمایش میده، همچنین بازدیدکنندگان کمتری هم در وبگذر می بینیم!
من که می گم سیستم toolsIR قوی تر از وبگذره
به نظر من اگه برای افراد آنلاین از سیژن استفاده کنید خیلی بهتره
چقدر هم الکی الگوریتم رو پیچیده کرده سرم گیج رفت
اگه خیلی بیشتر به تلفظ اهمیت میدید تا محتوا، سیشن یا سشین البته.