۱۳۸۵/۰۵/۲۰

ساده ترین شمارنده بازدیدکنندگان با PHP

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

در اغلب وب سایت ها قسمت کوچکی برای نشان دادن آمار بکار می رود. برخی از سیستم های آمار گیری اطلاعات زیادی را درباره بازدیدکنندگان ارائه می دهند و برخی دیگر که اغلب رایگان می باشند با محدودیت هایی در ارائه سرویس روبرو هستند. نقطه اشتراک تمامی سیستم های آمار گیری نشان دادن تعداد بازدیدکنندگان است. امروز قصد داریم ساده ترین نوع برنامه ی شمارنده بازدیدکنندگان را ارائه داده و با هم به بررسی کدهای آن بپردازیم.
ابتدا تمامی کد های مربوط به برنامه را ارائه می دهیم:
[php]
<?php
$counter_file = "./count.dat" ;
if ( !($fp = fopen($counter_file, "r"))) {
die ("cannot open $counter_file.") ;
}

$counter = (int) fread($fp, 20);
fclose($fp);
$counter++;
echo "Your visitor No. $counter.";
$fp = fopen ($counter_file, "w");
fwrite ($fp, $counter);
fclose($fp);
?>
[/php]

کد های فوق را در فایلی با پسوند php. و با نام دلخواه مانند hit-counter01.php ذخیره کنید. سپس فایلی با نام count و با پسوند dat. ایجاد نمائید. حال شما یک فایل برای اجرای کدها و فایلی دیگر برای ذخیره تعداد بازدیدکنندگان دارید. حال قسمت های مختلف کد را بررسی می کنیم:

[php]
$counter_file = "./count.dat" ;
[/php]
این کد آدرس فایلی را که تعداد بازدیدکنندگان در آن ذخیره می شود را مشخص می کند.

[php]
if ( !($fp = fopen($counter_file, "r"))) {
die ("cannot open $counter_file.");
}
[/php]
این قسمت شامل باز کردن فایل ($fp = fopen($counter_file, "r")) برای خواندن اطلاعات درون آن (پارامتر "r" مشخص می کند که فایل تنها برای خواندن باز شده است) ، بررسی بازشدن صحیح و نیز چاپ پیغام مناسب در هنگام عدم توانائی برای بازکردن فایل می باشد(دستور die از ادامه ی اجرای کد جلوگیری می کند).

[php]
$counter = (int) fread($fp, 20);
[/php]
در این خط اطلاعات درون فایل count.dat به اندازه 20 کاراکتر خوانده می شود و بعد از تغییر نوع اطلاعات از string به int با استفاده از (int)، اطلاعات در متغیر counter$ ذخیره می شوند.

[php]
fclose($fp);
[/php]
فایل را می بندد.

[php]
$counter++;
[/php]

متغیر counter$ را یک واحد افزایش می دهد.
[php]
echo "Your visitor No. $counter.";
[/php]

تعداد بازدیدکنندگان را چاپ می کند. مانند:

Your visitor No. 23.


[php]
$fp = fopen ($counter_file, "w");
[/php]

فایل را مجدد باز می کند(البته این بار با استفاده از پارامتر "w" فایل را برای تنها برای نوشتن).
[php]
fwrite ($fp, $counter);
[/php]

مقدار متغیر counter$ را در فایل قرار می دهد(اطلاعات قبلی فایل پاک می شود).
[php]
fclose($fp);
[/php]
فایل را می بندد.

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

۱۴ نظر:

  1. salam va khaste nabashid
    man az saite u didan kardan khili jaleb hastesh
    manam ye proje daram ke ba html va php bayad anjam bedam
    mishe u komakam konid
    mamnon misham
    movafagh bashid
    bye

    پاسخحذف
  2. دمت گرم عالی بود . فقط اگه باز هم از این کده داشتی برام میل کن

    پاسخحذف
  3. آقا من کدی رو میخام که کاربر لا هر بار کلیک روی لینک یکی به شمارندش اضافه بشه ضمنا یه جدول توی mysql دارم شامل عنوان مطلب-لینک مطلب-تعداد بازدید

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

    پاسخحذف
  5. خوب این کد رو باید بنویسید. شما شروع کنید، هر جا سوال داشتید بپرسین :)

    پاسخحذف
  6. خیلی ساده وزیبا توضیح دادید.مطمئنم که می تونید کتاب پر فروشی در زمینه آموزش php بنویسید.البته اگه تا حالا ننوشته باشید.آخه اکثر کتابا یه وری توضیح میدن که انکار کارآموز هم مثل خودشون کل مقدمات رو می دونه؟!

    پاسخحذف
  7. خوشحالم که براتون مفید بوده. من کتاب ننوشتم و بیشتر مطالبی که تصور میکنم برا بقیه میتونه مفید باشه رو در وبلاگم ارائه میدم.

    پاسخحذف
  8. سلام
    سوال در مورد این کد داشتم،
    مگه تابع fopen یه مقدار صحیح برنمی گردونه که فقط نشون میده فایل درست باز شده یانه و اون مقدار رو در متغیر fp میریزه ؟
    بنابراین:

    1- چطور میشه مطمئن بود که این عدد همون عدد ذخیره شده در مرحله قبلی است؟
    2- چه نیازی به استفاده از تبدیل به int وجود داره؟

    پاسخحذف
  9. طراحی سایت
    سلام
    خیلی ممنون
    اگر امکان داره کد های بهتر و بیشتری قرار بدید

    پاسخحذف