آخرین مراجعین

دوشنبه ۲۲ تیر ۱۳۸۸ - ۰۳:۳۸ قبل از ظهر

بازدید: 522 مرتبه

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

 

خوب اول یک بانک اطلاعاتی مثلا با نام refer_end بسازید، بعد دستورات sql زیر رو درون بانک اطلاعاتی مورد نظر درج کنید تا جداول مورد نظر ساخته بشن.

-- 
-- Table structure for table `refer`
--  
CREATE TABLE `refer` (
  `ip` int(100) NOT NULL,
  `page` varchar(225) NOT NULL,
  `date` varchar(225) NOT NULL,
  `back_page` varchar(225) NOT NULL,
  `browser` varchar(225) NOT NULL
)

 

سپس یک فایل php مثلا با نام  refer_end.php میسازین و شروع میکنین به نوشتن دستورات…

ادامه دستورات در (دنباله)

 


ابتدا به بانک اطلاعاتی مورد نظر متصل میشین

<?php 
$result = mysql_connect("localhost", "root", "");
mysql_select_db("refer_end");

 

بعدش دوتا متغییر برای تنظیمات برناممون اضافه می‌کنیم.

// تنظیمات
$view = 10;
$out = 2592000;

1. متغییر اولی تعیین میکنه یه می‌خوایین چه تعداد نمایش داده بشه، مثلا من مقدار ۱۰ رو بهش دادم که ۱۰ تای آخر رو به نمایش میزاره
۲/ متغییر دومی واسه اینکه بعد از یه مدت داده‌هایی که در بانک اطلاعاتی بودن رو پاک می کنه، چون ما به ۱۰ تا یا ۲۰ تای آخر نیاز داریم و نمی‌خواییم بانک اطلاعاتیمون رو سنگین کنیم، الان من به این متغییر مقدار ۲۵۹۲۰۰۰ رو دادم که بر حسب ثانیست و حدود ۱ ماه میشه، که بعد از یک ماه داده ها حذف میشن و دوباره شروع به کار میکنه.

 

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

// درج داده ها در بانک اطلاعاتی
if (isset($_SERVER['HTTP_REFERER']))
{
   mysql_query("insert into `refer`
   		(ip, page, date, back_page, browser)
   		values
   		(
   		  '".$_SERVER['REMOTE_ADDR']."',
   		  '".$_SERVER['REQUEST_URI']."',
   		  '".time()."',
   		  '".$_SERVER['HTTP_REFERER']."',
   		  '".$_SERVER['HTTP_USER_AGENT']."'
   		)
   ");
}

اول چک میکنه که آیا یک کاربر از صفحه ای به این صفحه مراجعه کرده یا نه، اگه از سایتی یا صفحه‌ای دیگه مراجعه کرده باشه، در بانک اطلاعاتی مشخصاتش ذخیره میشه.

 

این دستور هم داده‌ها رو بعد از زمان مشخص شده پاک میکنه.

//پاک کردن داده ها از بانک اطلاعاتی بعد از یک مدت مشخص 
$timeout = time() - $out;
mysql_query("DELETE FROM `refer` WHERE `date` < $timeout");

 

خوب در آخر سرم داده‌ها رو به نمایش میزاریم.
اول داده‌ها رو از بانک اطلاعاتی می‌گیریم، سپس چک می‌کنیم که آدرس مراجعه کننده اولش http:// داره یا نه، اگه نداشت اولش http:// رو می‌چسبونه و بعد با استفاده از تابع split و با توجه به ‘/’ تکه تکه میکنه آدرسو و سومین تکه رو جدا میکنه و به نمایش میزاره، به این مثال توجه کنین http://www.mjm3d.com/123 خوب اگه تیکه تیکش کنیم اولی میشه http: و بعدش دومی هم که مقداری نداره و سومی هم که www.mjm3d.com میشه.

//گرفتن داده ها از بانک اطلاعاتی و نمایش داده ها
$result = mysql_query ("SELECT * FROM `refer`
				ORDER BY `date` DESC
				LIMIT ".$view);

   echo "<ul>";
   while ($row = mysql_fetch_array($result))
   {
     $ref_long = $row['back_page'];
     if (strtoupper(substr($ref_long, 0, 7)) != "HTTP://") {
	$ref_long = "http://" . $ref_long;
     }
     $sp = split("/", $ref_long);
     $ref_short = $sp[2];

     echo "<li>
     	     <a
     	       title=\"".date('j F Y - h:i A', $row['date'])."\"
     	       href=\"".$ref_long."\">
     	       ".$ref_short."
     	     </a>
     	   </li>";
   }
   echo "</ul>";
?>

 

این هم سورس کامل + فایل sql

لینک دانلود: refer_end.zip

حجم:۲ kb

پسورد: mjm3d.com

 

دسته: فلاش, پی اچ پی

 | 

نویسنده: محمد جواد (admin)


۴ نظر برای [ آخرین مراجعین ]

  1. نویسنده: مازیار سرور
    سه شنبه ۲۳ تیر ۱۳۸۸ - ۰۱:۵۸ بعد از ظهر
     

    عالی بود.

  2. نویسنده: محمد جواد (admin)
    چهارشنبه ۲۴ تیر ۱۳۸۸ - ۰۱:۰۷ بعد از ظهر
     

    مرسی آقا مازیار

  3. نویسنده: نبی
    سه شنبه ۶ مرداد ۱۳۸۸ - ۱۲:۲۳ قبل از ظهر
     

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

  4. نویسنده: محمد جواد (admin)
    چهارشنبه ۷ مرداد ۱۳۸۸ - ۱۲:۴۲ قبل از ظهر
     

    ممنون آقا نبی

    بله این دو نکته رو میدونم، تو فکرش هم بودم، ولی عجله دادشتم، دیگه این دو نکته رو توجه نکردم، بزودی در نسخه جدیدش اینها رو لحاظ میکنم.

    با تشکر

نظری بنویسید.