PDA

View Full Version : سوال: نحوه پیاده سازی یک آمارگیر ساده



maysam.m
چهارشنبه 10 آذر 1389, 14:11 عصر
سلام

میخوام یه آمارگیر ساده بنویسم و میخوام بدونم چه چدول و ستونهایی باید ایجاد کنم و نحوه کار چطوری است.

امکاناتی که مد نظرمه اینه:
بازدید امروز،دیروز،ماه،کل

نمیدونم چطوری باید بازدید های امروز و دیروز و ماه رو بدست بیارم.

ممنون میشم دوستان یه راهنمایی کنند.

UnnamE
چهارشنبه 10 آذر 1389, 19:18 عصر
اينا رو نگاه كن متوجه ميشي
http://www.hotscripts.com/category/php/scripts-programs/web-traffic-analysis/
اينا رو هم همينطور
http://www.hotscripts.com/category/php/scripts-programs/counters/
هم ساده دارن و هم پيشرفته و هم فوق پيشرفته
بهتر يه ساده رو بگيري و توسعه بدي!

hossin.esm
پنج شنبه 11 آذر 1389, 10:02 صبح
یکی از الگوریتم ها این هست می توانید یک جدول ایجاد کنید که صفحه(نام فایل) ، ip کاربر، و تاریخ وزمان را نگه دارد. و یک تابع یا کلاس ایجاد کنید که کاربر با ورود به هر صفحه این تابع صدا زده شده و در تابع اطلاعات کاربر به دیتابیس insert شده و بعد با select از دیتابیس می تونید آمار امروز و دیروز و... را نمایش دهید.




CREATE TABLE count (
Id int(11) NOT NULL AUTO_INCREMENT,
page varchar(500) NOT NULL,
`Date` date NOT NULL,
IP varchar(50) DEFAULT NULL,
PRIMARY KEY (Id)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;



مثال :
البته این مثال بر اساس ip فیلتر شده که شما می توانید بر اساس صفحه و... فیلتر کنید.




<?php
$page =basename($_SERVER['PHP_SELF']);
$timestampInSeconds = $_SERVER['REQUEST_TIME'];
$mySqlDateTime= date("Y-m-d H:i:s", $timestampInSeconds);
$sql = 'INSERT INTO count(`id`, `page`, `Date`, `IP`)
VALUES (NULL, \''.$page.'\',\''.$mySqlDateTime.'\', \''.$_SERVER['REMOTE_ADDR'].'\');';
mysql_query($sql);
$todayDate= date("Y-m-d", $timestampInSeconds);
$yesterdayDate= date("Ymd", strtotime("-1 day"));
$query='SELECT COUNT( * ) total FROM count';
$result = mysql_query($query);
$row = mysql_fetch_array($result, MYSQL_NUM);
$count = $row[0]+1135;
$query='SELECT count(distinct IP) FROM count where date=\''.$yesterdayDate.'\'';
$result = mysql_query($query);
$row = mysql_fetch_array($result, MYSQL_NUM);
$count_yest = $row[0];
$query='SELECT count(distinct IP) FROM count where Date=\''.$todayDate.'\'';
$result = mysql_query($query);
$row = mysql_fetch_array($result, MYSQL_NUM);
$count_today = $row[0];
mysql_close($con);
print '<ul>';
print '<li>'.'بازدید امروز :'.$count_today.' نفر </li>';
print '<li>'.'بازدید دیروز :'.$count_yest.' نفر </li>';
print '<li>'.'کل بازدیدها :'.$count.'مرتبه</li>';
print '</ul>';


?>

idocsidocs
پنج شنبه 11 آذر 1389, 14:38 عصر
سلام

میخوام یه آمارگیر ساده بنویسم و میخوام بدونم چه چدول و ستونهایی باید ایجاد کنم و نحوه کار چطوری است.

امکاناتی که مد نظرمه اینه:
بازدید امروز،دیروز،ماه،کل

نمیدونم چطوری باید بازدید های امروز و دیروز و ماه رو بدست بیارم.

ممنون میشم دوستان یه راهنمایی کنند.

من هم به دنبال یه اسکریپت آمار گیر ساده هستم. اما الان مشغول نوشتن یه کد امنیتی برای جلوگیری از اس کیو ال اینجکشن هستم و نمی تونم روی آمار گیر تمرکز کنم.

لطفا وقتی که به کد نهایی رسیدید، کد رو برای من هم ارسال کنید.

maysam.m
جمعه 12 آذر 1389, 11:06 صبح
با سلام

hossin.esm جان ممنون از کدی که گذاشتید. میخواستم بدونم ستون page کارش چیست و چرا در این کدها چیزی برایش در نظر گرفته نشده است و خالی است؟

hossin.esm
جمعه 12 آذر 1389, 11:41 صبح
page برای نگهداری نام فایل مثال index.php و...
مورد استفاده : تعداد بازدید های این صفحه
می توانید از کد زیر استفاده کنید



$page=basename($_SERVER['PHP_SELF']);

shahriyar3
یک شنبه 14 آذر 1389, 00:01 صبح
یکی از الگوریتم ها این هست می توانید یک جدول ایجاد کنید که صفحه(نام فایل) ، ip کاربر، و تاریخ وزمان را نگه دارد. و یک تابع یا کلاس ایجاد کنید که کاربر با ورود به هر صفحه این تابع صدا زده شده و در تابع اطلاعات کاربر به دیتابیس insert شده و بعد با select از دیتابیس می تونید آمار امروز و دیروز و... را نمایش دهید.




CREATE TABLE count (
Id int(11) NOT NULL AUTO_INCREMENT,
page varchar(500) NOT NULL,
`Date` date NOT NULL,
IP varchar(50) DEFAULT NULL,
PRIMARY KEY (Id)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

مثال :
البته این مثال بر اساس ip فیلتر شده که شما می توانید بر اساس صفحه و... فیلتر کنید.




<?php
$page =$f;
$timestampInSeconds = $_SERVER['REQUEST_TIME'];
$mySqlDateTime= date("Y-m-d H:i:s", $timestampInSeconds);
$sql = 'INSERT INTO count(`id`, `page`, `Date`, `IP`)
VALUES (NULL, \''.$page.'\',\''.$mySqlDateTime.'\', \''.$_SERVER['REMOTE_ADDR'].'\');';
mysql_query($sql);
$todayDate= date("Y-m-d", $timestampInSeconds);
$yesterdayDate= date("Ymd", strtotime("-1 day"));
$query='SELECT COUNT( * ) total FROM countl';
$result = mysql_query($query);
$row = mysql_fetch_array($result, MYSQL_NUM);
$count = $row[0]+1135;
$query='SELECT count(distinct IP) FROM count where date=\''.$yesterdayDate.'\'';
$result = mysql_query($query);
$row = mysql_fetch_array($result, MYSQL_NUM);
$count_yest = $row[0];
$query='SELECT count(distinct IP) FROM count where Date=\''.$todayDate.'\'';
$result = mysql_query($query);
$row = mysql_fetch_array($result, MYSQL_NUM);
$count_today = $row[0];
mysql_close($con);
print '<ul>';
print '<li>'.'بازدید امروز :'.$count_today.' نفر </li>';
print '<li>'.'بازدید دیروز :'.$count_yest.' نفر </li>';
print '<li>'.'کل بازدیدها :'.$count.'مرتبه</li>';
print '</ul>';




?>


گرامی
این کد مشکل داره!
به نظر میرسه که کد و بصورت کامل نزاشتید
شما برای شمردن ستون ها از MYSQL_NUM استفاده کردید که برای من خطا میگیره ولی راه جایگزین row_count
یکی هم اینکه مقدار صفحه جاری کجا به دست میاد که شما وارد دیتا بیس میکنید؟
یکی دیگه هم اینکه این خط


$query='SELECT COUNT( * ) total FROM countl';

باید اصلاح بشه!
ببخشید که تو کدتون دست بردم
ولی در کل مرسی از اینکه این کد و اینجا گذاشتین تا همه استفاده کنن :چشمک:

maysam.m
دوشنبه 22 آذر 1389, 14:52 عصر
سلام

میخواستم آمار یک هفته قبل و یک ماه قبل را هم از همین طریق استخراج کنم ولی به مشکل خوردم.


date("Ymd", strtotime("-1 week"))
date("Ymd", strtotime("-1 month"))

ظاهرا این دو کدی که در بالا نوشتم فقط آمار اون روز خاص در یک هفته یا یک ماه قبل را نشان میدهد!
برای اینکه بتونیم آمار یک هفته یا یک ماه پیش تا امروز را بدست بیاریم باید چه کار کنیم؟

hossin.esm
دوشنبه 22 آذر 1389, 15:21 عصر
http://php.net/manual/en/function.strtotime.php
این کد را امتحان کن



$query='SELECT count(distinct IP) FROM count where date>\''.date("Ymd", strtotime("-1 month")) .'\'';

payamsp
سه شنبه 23 آذر 1389, 10:46 صبح
تو این پست
http://webnevis.net/1389/06/14/statistics-show-daily-with-php
هم یه اموزش در این باره نوشتم ، شاید بدردتون بخوره .

موفق باشید

hossin.esm
دوشنبه 04 بهمن 1389, 13:18 عصر
این روش عیبی که دارد اطلاعات زیادی را در دیتابیس وارد میکند
ولی برای انالیز کردن امار سایت مفید هست مثلا رسم نمودار امار بازدید و تعداد بازدیدها از هر صفحه و ...

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

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

http://barnamenevis.org/showthread.php?269921-ساخت-باکس-تعداد-بازدید-کنندگان-سایت

http://barnamenevis.org/showthread.php?270652-شمارنده-آمار-بازديد

ساسان رستمی
پنج شنبه 17 آذر 1390, 03:10 صبح
سلام وخسته نباشید لطفا اگر کسی در مورد آمار گیری با زبان c# - sql server بلده اینجا بزاره یا بهم ایمیل کنه بصورت روزانه وهفتگی ودیروز وخلاصه یه امار گیر کل ی می خوام خودم تو پایگاه داده نوشتم امار کاربران روزاه رو نشون میده با استفاده از تاریخ تو یه جدول ذخیره میکنم حالا می خوام این امار امروز را فردا نشون بدم چیکار باید بکنم