گروه مقاله : جاوا اسكريپت Java Script
تاريخ انتشار : 1395/07/28 - 11:50
كد :7240

نمایش آمار سایت

دانستن میزان ترافیک سایت همیشه از دغدغه های صاحبان وبسایت بوده است اگر شما هم همن دغدغه را دارید و می خواهید آمار سایت خود را روی وب ببینید. می توانید به آن آموزش رجوع نمایید.

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


آمار وبسایت مانند تعداد بازدید کنندگان ، تعداد بازدید کنندگان آنلاین ، مجموع بازدید ها. و غیره ، بسیار داده ی سودمندی است . تمام صاحبان وبگاه ها باید به این اطلاعات دسترسی داشته باشند تا بدانند وبگاهشان چگونه کار می کند. چه تعداد کاربر آنلاین ، تعداد کاربرانی که هر روزه یا هر ماه سایت شما را می بینند . اساسا صاحبان وبسایت از کتابخانه های خارجی و یا سایر وبسایت های آماری برای دریافت آمار وبسایتشان استفاده می کنند . اگر شما هم خواهان دریافت این آمار از وبگاه خود با روش خاص خود هستید این آموزش را دنبال کنید. تا به شما نشان دهیم به کمک PHP, jQuery و MySQL چگونه این آمار را بدست آورید.



برای انجام این آموزش و داشتن آمار وبسایت شما فقط دو گام زیر را نیاز دارید.


گام1. ساخت یک فایل PHP که ما آن را اینجا ساخته ایم و به نام statistics.php ذخیره کرده ایم .


// Database Structure
CREATE TABLE 'total_visitors' (
'id' int NOT NULL,
'session' text NOT NULL,
'time' int NOT NULL,
) ENGINE=MyISAM AUTO_INCREMENT=5 DEFAULT CHARSET=latin1

CREATE TABLE 'pageviews' (
'id' int NOT NULL,
'page' text NOT NULL,
'ip' text NOT NULL,
) ENGINE=MyISAM AUTO_INCREMENT=5 DEFAULT CHARSET=latin1

CREATE TABLE 'articles' (
'id' int NOT NULL,
'title' text NOT NULL,
'link' int NOT NULL,
) ENGINE=MyISAM AUTO_INCREMENT=5 DEFAULT CHARSET=latin1

<?php
session_start();
$_SESSION['session']=session_id();

$host="localhost";
$username="root";
$password="";
$databasename="sample";
$connect=mysql_connect($host,$username,$password);
$db=mysql_select_db($databasename);

function total_online()
{
$current_time=time();
$timeout = $current_time - (60);

$session_exist = mysql_query("SELECT session FROM total_visitors WHERE session='".$_SESSION['session']."'");
$session_check = mysql_num_rows($session_exist);

if($session_check==0 && $_SESSION['session']!="")
{
mysql_query("INSERT INTO total_visitors values ('','".$_SESSION['session']."','".$current_time."')");
}
else
{
$sql = mysql_query("UPDATE total_visitors SET time='".time()."' WHERE session='".$_SESSION['session']."'");
}

$select_total = mysql_query("SELECT * FROM total_visitors WHERE time>= '$timeout'");
$total_online_visitors = mysql_num_rows($select_total);
return $total_online_visitors;
}

if(isset($_POST['get_online_visitor']))
{
$total_online=total_online();
echo $total_online;
exit();
}
?>

<html>
<head>
<link href="statistics_style.css" type="text/css" rel="stylesheet"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
$(document).ready(function(){
setInterval(function()
{
$.ajax
({
type:'post',
url:'',
data:{
get_online_visitor:"online_visitor",
},
success:function(response) {
if(response!="")
{
$("#online_visior_val").html(response);
}
}
});
}, 10000)
});
</script>
</head>
<body>
<div id="wrapper">

<?php

// To Get Total Online Visitors
$total_online_visitors=total_online();

// To Get Total Visitors
$total_visitors = mysql_query("SELECT * FROM total_visitors");
$total_visitors = mysql_num_rows($total_visitors);

// To Insert Page View And Select Total Pageview
$user_ip=$_SERVER['REMOTE_ADDR'];
$page=$_SERVER['PHP_SELF'];
mysql_query("insert into pageviews values('','$page','$user_ip')");
$pageviews = mysql_query("SELECT * FROM pageviews");
$total_pageviews = mysql_num_rows($pageviews);

//To Get Total Articles
$articles = mysql_query("SELECT * FROM articles");
$total_articles = mysql_num_rows($articles);
?>

<div id="stat_div">
<li><p>Total Visitors</p><br><span><?php echo $total_visitors;?></span></li>
<li><p>Visitors Online</p><br><span id="online_visior_val"><?php echo $total_online_visitors;?></span></li>
<li><p>Total Pageviews</p><br><span><?php echo $total_pageviews;?></span></li>
<li><p>Total Articles</p><br><span><?php echo $total_articles;?></span></li>
</div>

</div>
</body>
</html>

در این گام ما سه جدول در بانک داده ایجاد کرده ایم . 'total_visitors' و 'pageviews' و 'articles' ما مجموع بازدید کنندگان و مجموع افراد آنلاین را توسط بانک داده اول (جدول اول ) بدست می آوریم . تعداد کل بازدید ها را توسط بانک داده دوم (جدول دوم ) بدست می آوریم . و با جمع آوری تمام داده های مورد نیاز خود از مقالات در جدول مقاله ها ، ما مجموع مقاله ها را ازبانک articles (جدول articles)بدست می آوریم.
برای بدست آوردن تعداد افراد آنلاین ما یک تابع به نام 'total_online' ایجاد کرده در زیر این تابع ما زمان حال حاضر را دریافت و منهای 60 می کنیم زیرا که هر چه بازه زمانی ما کوتاه تر باشد دقت ما بیشتر است . سپس ما یک تابع session_id() را برای ایجاد session برای کاربران و درج در متغیر session برای کاربران تازه وارد.
سپس ما کوئری بانک داده را چک می کنیم مه ببینیم این session id مقدار دارد یا خیر (در بانک داده وجود دارد یا خیر) و اگر در بانک داده مقدار نداشت معنی آن این است که کاربر بتازگی وبگاه ما را باز کرده است پس ما ایدی کاربر را به همراه زمان حاضر در مجموع بازدید کنندگان 'total_visitors' درج می کنیم . اگر session id در بانک مقدار داشت و حاضر بود معنی آن این است که کاربر در حال حاضر آنلاین است پس زمان را به زمان حاضر بروز رسانی می کنیم.

حالا برای داشتن تمام کاربران آنلاین ما از منطق ساده ای پیروی می کنیم . تمام sessions ها را که تفاوت زمانی میان زمان حاضر و زمان درج شده دارند در صورتی که این زمان کمتر از 60 ثانیه باشد را برای بدست آوردن دقیق ترین میزان افراد آنلاین بکار می بریم . اگر از زمانی بیش از 60 ثانیه استفاده کنیم ممکن است کاربر در حال حاضر وبگاه را ترک کرده باشد. .
ما از توابع ajax برای فراخوانی این تابع و کنترل بازدیدکنندگان آنلاین در هر 10 ثانیه و در همه زمان ها این تابع زمان session را به زمان حاضر بروز رسانی می کند بنابراین اگر این اختلاف بیش از 60 ثانیه باشد معنی آن این است که کاربر دیگر آنلاین نیست.


گام 2. ساخت یک فایل CSS که ما با کد های زیر ایجاد و به نام statistics_style.css ذخیره کرده ایم.


body
{
margin:0 auto;
padding:0px;
text-align:center;
width:100%;
font-family: "Myriad Pro","Helvetica Neue",Helvetica,Arial,Sans-Serif;
background-color:#A9BCF5;
}
#wrapper
{
margin:0 auto;
padding:0px;
text-align:center;
width:995px;
}
#stat_div li
{
list-style-type:none;
display:inline-block;
color:#084B8A;
margin:20px;
font-weight:bold;
}
#stat_div li p
{
font-size:30px;
}
#stat_div li span
{
padding:40px;
background-color:#084B8A;
color:white;
border-radius:50%;
font-size:30px;
}

این تمام کاری است که برای داشتن آمار افراد به کمک PHP, jQuery و MySQLباید انجام دهیم . اگر دوست داشتید کد ها را بر اساس نیاز خود تغییر دهید . از دیدن پیام هایتان خوشحال میشوم.  

نظرات كاربران :