وبگرانکد های phpنمایش آمار بازدیدها با PHP بدون استفاده از دیتابیس

نمایش آمار بازدیدها با PHP بدون استفاده از دیتابیس

نمایش آمار بازدیدها با PHP بدون استفاده از دیتابیس

در این مقاله می خواهیم نمایش آمار بازدیدها با PHP بدون استفاده از دیتابیس را به شما معرفی کنیم. شاید استفاده از دیتابیس هم کار بیهوده ای به نظر برسد چرا که به راحتی می توان با استفاده از یک یا دو فایل txt این کار را به راحتی انجام داد.

خب ممکن است بپرسید چرا اصلا باید با دیتابیس کار کرد در حالی که با فایل های txt و کد های php مناسب می توان این کار را راحت و بدون دردسر انجام دهیم؟

پاسخ این سوال این است که از دیتابیس برای ثبت اطلاعات بسیار زیاد مثل ثبت مقالات و نظرات استفاده می شود. اما برای ثبت مواردی مثل چند عدد لازم به چنین کاری وجود ندارد.

نمایش آمار بازدید ها با استفاده از php

در ابتدا یک فایل با نام stats.php می سازیم و کد های زیر را داخل آن قرار می دهیم:

</p>
<p style="direction: ltr;">//اختلاف زمانی سرور</p>
<p style="direction: ltr;">$time_zone = 12600;</p>
<p style="direction: ltr;">$today = date("Y-m-d", time() + $time_zone);</p>
<p style="direction: ltr;"></p>
<p style="direction: ltr;">//تاریخ امروز</p>
<p style="direction: ltr;">$yesterday = date("Y-m-d", time() - 86400 + $time_zone);</p>
<p style="direction: ltr;">//تاریخ دیروز</p>
<p style="direction: ltr;">$week_visit = 0;</p>
<p style="direction: ltr;">//متغیرهای پیش فرض</p>
<p style="direction: ltr;">$month_str = null;</p>
<p style="direction: ltr;">$month_visit = 0;</p>

<pre class="lang:default decode:true ">
//آدرس فایل</pre>
<p style="direction: ltr;">$file_src = 'include/visit-stats.txt';</p>
<p style="direction: ltr;">chmod($file_src, 0755);</p>

<pre class="lang:default decode:true ">
//خواندن فایل</pre>
<p style="direction: ltr;">if (filesize($file_src) > 0 || $read_file != ''){</p>
<p style="direction: ltr;">$read_file = file_get_contents($file_src);</p>

<pre class="lang:default decode:true ">
//اگر فایل خالی نبود</pre>
<p style="direction: ltr;">    $modify = $split_file[31];</p>
<p style="direction: ltr;">    $split_file = explode('|', $read_file);</p>

<pre class="lang:default decode:true ">    
    //print_r($split_file);</pre>
<p style="direction: ltr;"></p>
<p style="direction: ltr;">    //اگر تاریخ آخرین ویرایش برابر تاریخ امروز نبود</p>

<pre class="lang:default decode:true ">    if($modify != $today){</pre>
<p style="direction: ltr;">        }</p>

<pre class="lang:default decode:true ">        $today_visit = 1;
        if($modify == $yesterday){</pre>
<p style="direction: ltr;">            $yesterday_visit = $split_file[0];</p>

<pre class="lang:default decode:true ">        } else{
            $yesterday_visit = 0;</pre>
<p style="direction: ltr;">        for($i = 2; $i < 30; $i++) {</p>
<p style="direction: ltr;"></p>
<p style="direction: ltr;">        $week_visit += $today_visit + $yesterday_visit;</p>
<p style="direction: ltr;">        $month_visit += $today_visit + $yesterday_visit;</p>
<p style="direction: ltr;"></p>
<p style="direction: ltr;">            $month_str .= $split_file[$i - 1];</p>

<pre class="lang:default decode:true ">            
            if($i < 29) {</pre>
<p style="direction: ltr;">            }</p>

<pre class="lang:default decode:true ">                $month_str .= '|';
            if($i < 8) {</pre>
<p style="direction: ltr;">        $total_visit = $split_file[30] + 1;</p>
<p style="direction: ltr;">                $week_visit += $split_file[$i - 1];</p>

<pre class="lang:default decode:true ">            }</pre>
<p style="direction: ltr;">        }</p>

<pre class="lang:default decode:true ">            $month_visit += $split_file[$i - 1];</pre>
<p style="direction: ltr;">        $month_visit += $today_visit + $yesterday_visit;</p>

<pre class="lang:default decode:true ">        $last_modify = $today;
    } //اگر تاریخ آخرین ویرایش برابر امروز بود</pre>
<p style="direction: ltr;">        $today_visit = $split_file[0] + 1;</p>

<pre class="lang:default decode:true ">    else{
        $yesterday_visit = $split_file[1];</pre>
<p style="direction: ltr;"></p>

<pre class="lang:default decode:true ">        $week_visit += $today_visit + $yesterday_visit;</pre>
<p style="direction: ltr;">                $week_visit += $split_file[$i];</p>
<p style="direction: ltr;">        for($i = 2; $i < 30; $i++) {</p>
<p style="direction: ltr;">            $month_str .= $split_file[$i];</p>

<pre class="lang:default decode:true ">            
            if($i < 29) {</pre>
<p style="direction: ltr;">            }</p>

<pre class="lang:default decode:true ">                $month_str .= '|';
            
            if($i < 8) {</pre>
<p style="direction: ltr;">    $week_visit = 1;</p>

<pre class="lang:default decode:true ">            }</pre>
<p style="direction: ltr;">            $month_visit += $split_file[$i];</p>

<pre class="lang:default decode:true ">        }</pre>
<p style="direction: ltr;">        $last_modify = $today;</p>

<pre class="lang:default decode:true ">        $total_visit = $split_file[30] + 1;
    }
} //اگر فایل خالی بود
else{</pre>
<p style="direction: ltr;">$visit_data = $today_visit . '|' . $yesterday_visit . '|' . $month_str . '|' . $total_visit . '|' . $last_modify;</p>

<pre class="lang:default decode:true ">    $today_visit = 1;
    $yesterday_visit = 0;
    $month_visit = 1;</pre>
<p style="direction: ltr;">    for($i = 2; $i < 30; $i++) {</p>

<pre class="lang:default decode:true ">        $month_str .= '0';</pre>
<p style="direction: ltr;">            $month_str .= '|';</p>

<pre class="lang:default decode:true ">        
        if($i < 29) {</pre>
<p style="direction: ltr;">    $total_visit = 1;</p>

<pre class="lang:default decode:true ">        }
    }</pre>
<p style="direction: ltr;">//نوشتن آمار جدید در فایل</p>

<pre class="lang:default decode:true ">    $last_modify = $today;
}</pre>
<p style="direction: ltr;">//خواندن اطلاعات فایل</p>

<pre class="lang:default decode:true ">$file_src_handle = fopen($file_src, 'w+');
fwrite($file_src_handle, $visit_data);</pre>
<p style="direction: ltr;">//محاسبه تعداد کاربران آنلاین</p>

<pre class="lang:default decode:true ">fclose($file_src_handle);

$config_array = array(</pre>
<p style="direction: ltr;">'user_ip' => $_SERVER['REMOTE_ADDR'],</p>

<pre class="lang:default decode:true ">'user_time' => date("YmdHis", time() + $time_zone),
'file_name' => 'include/visit-online.txt'
);</pre>
<p style="direction: ltr;">//حذف آی پی های قدیمی و آی پی فعلی</p>

<pre class="lang:default decode:true ">chmod($config_array['file_name'], 0755);</pre>
<p style="direction: ltr;">$online_file = file_get_contents($config_array['file_name']);</p>

<pre class="lang:default decode:true ">
//تجزیه به آرایه</pre>
<p style="direction: ltr;">//حذف مقادیر خالی</p>

<pre class="lang:default decode:true ">$online_file = explode("\r\n", $online_file);</pre>
<p style="direction: ltr;">    if(is_null($value) || $value == ''){</p>

<pre class="lang:default decode:true ">foreach($online_file as $key=> $value){
        unset($online_file[$key]);
    }
}</pre>
<p style="direction: ltr;">    if($user_ip_time[1] >= date("YmdHis", time() + $time_zone - 300)){</p>

<pre class="lang:default decode:true ">foreach($online_file as $key=> $value){
    $user_ip_time = explode("|", $value);</pre>
<p style="direction: ltr;">    if($user_ip_time[1] <= date("YmdHis", time() + $time_zone - 300)){</p>

<pre class="lang:default decode:true ">        unset($online_file[$key]);
    }</pre>
<p style="direction: ltr;">        unset($online_file[$key]);</p>

<pre class="lang:default decode:true ">    if($user_ip_time[0] == $config_array['user_ip']){
    }
}

//محاسبه تعداد افراد آنلاین</pre>
<p style="direction: ltr;">    $user_ip_time = explode("|", $online_users);</p>

<pre class="lang:default decode:true ">$online = 1;
foreach($online_file as $online_users){
        $online++;
    }
}</pre>
<p style="direction: ltr;">//گرفتن خروجی</p>
<p style="direction: ltr;">//آمار کاربرانی که آنلاین هستند به اضافه کاربر فعلی</p>
<p style="direction: ltr;">$new_online = $config_array['user_ip'] . "|" . $config_array['user_time'] . "\r\n";;</p>

<pre class="lang:default decode:true ">foreach($online_file as $key=> $value){
    $new_online .= $value . "\r\n";
}</pre>
<p style="direction: ltr;">$file_src_handle = fopen($config_array['file_name'], 'w+');</p>

<pre class="lang:default decode:true ">//نوشتن آمار جدید در فایل
fwrite($file_src_handle, $new_online);
fclose($file_src_handle);</pre>
<p style="direction: ltr;">?></p>

<pre class="lang:default decode:true ">//////////////// Webgoo.ir ///////////////</pre>
<p style="direction: ltr;">echo '<div class="stats"></p>
<p style="direction: ltr;">&raquo; بازدید امروز: ' . $today_visit . '<br></p>
<p style="direction: ltr;">&raquo; بازدید دیروز: ' . $yesterday_visit . '<br></p>

<pre class="lang:default decode:true ">&raquo; بازدید هفته: ' . $week_visit . '<br></pre>
<p style="direction: ltr;">&raquo; بازدید کل: ' . $total_visit . '<br></p>

<pre class="lang:default decode:true ">&raquo; بازدید ماه: ' . $month_visit . '<br>
&raquo; افراد آنلاین: ' . $online . '</pre>
<p style="direction: ltr;"></div>';</p>
<p style="direction: ltr;">

حال به دو فایل با پسوند txt نیاز داریم تا اطلاعاتمان را در آن ثبت کنیم:

پس دو فایل با نام های visit-online.txt و visit-stats.txt در کنار فایل stats.php ایجاد می کنیم.

به همین راحتمی می توانیم یک آمار بازدید ساده و سبک و فقط با استفاده از کد های php بسازیم.

خروجی چیزی شبیه به اطلاعات زیر است:

» بازدید امروز: ۱۲

» بازدید دیروز: ۳۲

» بازدید هفته: ۱۴۸

» بازدید ماه: ۱۴۸

» بازدید کل: ۱۵۲

» افراد آنلاین: ۱


اشتراگ گذاری در:
اگه خوبه لایکش کن




دیدگاه بگذارید

avatar
  Subscribe  
Notify of