PDA

View Full Version : آموزش: آمار بازدید کنندگان



poorchangiz
سه شنبه 31 مرداد 1391, 11:12 صبح
سلام دوستان چطور میتونم با استفاده از PHP آمار بازدید کنندگان بزارم. اگه میشه راهنمائیم کنید.ممنون

desatir7316
سه شنبه 31 مرداد 1391, 11:47 صبح
چرا عنوان تاپیکتو آموزشی زدی؟
بذارش سوال.

soroush.r70
سه شنبه 31 مرداد 1391, 14:07 عصر
کد اصلی :


////////////////////////////////////نمایش تعداد بازدید امروز دیروز و کل/////////////////////////////////////////////
$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;
}
}


ساخت دوفایل soroushamar.txt و counter.txt

فراخوانی :


<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>

رضا قربانی
سه شنبه 31 مرداد 1391, 14:48 عصر
http://barnamenevis.org/showthread.php?284309-%DA%A9%D8%AF%D9%87%D8%A7%DB%8C%DB%8C-%D8%A8%D8%B1%D8%A7%DB%8C-%D8%A2%D9%85%D8%A7%D8%B1-%D8%A8%D8%A7%D8%B2%D8%AF%DB%8C%D8%AF-%DA%A9%D9%86%D9%86%D8%AF%DA%AF%D8%A7%D9%86&p=1254658&viewfull=1#post1254658

موفق باشید