PDA

View Full Version : کمک در نوشتن کد آمار بازدید::(استادمون گفته خودتون بنویسید تا بتونید کدارو توضیح بدید)



olampiad
سه شنبه 04 فروردین 1394, 19:36 عصر
سلام و خسته نباشید به دوستان عزیز
استادمون ازمون خواسته که تو تعطیلات عید یه آمار بازدید از سایت بنویسیم.
گفته از پروژه های آماده استفاده نکنیم و خودمون بنویسیم.
تو اینترنت و تو خود این انجمن خیلی گشتم ولی از هیچ کدوم از کد ها چیزی سر درنیاوردم.(کدها خیلی درهم برهم بود شایدم من کم تجربه بودم)
حالا میخوام این سیستم رو خودم از صفر بنویسم میدونم خیلی سخته ولی اگه یه کوچولو راهنماییم کنید و توابع رو معرفی کنید بقیشو خودم میرم.
من پروژه رو ی بار توضیح میدم ولی هرکجاش که اشتباه کردم روش درست رو نشونم بدید.
تو پروژه ی من این آمار لازمه:

بازدید های امروز
بازدید های دیروز
بازدید های این هفته
بازدید های این ماه
بازدید کل
و
تعداد کاربران آنلاین

برای نوشتن آمار های بازدید یه جدول درست میکنم که تو اون آی پی بازدید کننده و زمان بازدید رو ثبت کنه.
و یه تابع تو صفحه ی اصلی سایت مینویسم که وقتی کسی از سایت بازدید کرد آی پی شخص و زمان ورود اونرو بنویسه.
حالا باید کنترل کنم که شخص فقط میتونه تو یه روز فقط ی بار از سایت بازدید کنه.(مثلا کسی میاد ده بار سایت رو رفرش میکنه و ده تا بازدید اشتباهی ثبت میشه)
این از ثبت آمار بازدید.
حالا من چطوری میتونم تشخیص بدم که این آمار های بازدید واسه کی هستش؟
مثلا چند نفر امروز بازدید کردن چند نفر دیروز چند نفر این هفته و ...
درسته من زمان بازدید هر شخص رو دارم ولی نمیدونم از چ توابعی برای تشخیص زمان یک ماه قبل استفاده کنم؟
میشه این توابع رو معرفی کنید و ی توضیح مختصری بدید؟

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

ali.webdesign
سه شنبه 04 فروردین 1394, 20:09 عصر
شما میتونید برای تشخیص کاربرانتون از آیپی استفاده کنید اگر میخواید دقیق تر باشه میتونید اطلاعات سیستم بازدیدکننده رو هم تو دیتابیس ذخیره کنید

برای کاربران آنلاین هم خیلی راحته

یه جدول بسازید که ایدی یا یوزر کاربر توش ذخیره بشه

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

دانیال دزفولی
سه شنبه 04 فروردین 1394, 21:06 عصر
شما میتونید برای تشخیص کاربرانتون از آیپی استفاده کنید اگر میخواید دقیق تر باشه میتونید اطلاعات سیستم بازدیدکننده رو هم تو دیتابیس ذخیره کنید

برای کاربران آنلاین هم خیلی راحته

یه جدول بسازید که ایدی یا یوزر کاربر توش ذخیره بشه

با ورود کاربر به سیستم در حین ساخت سشن نام کاربری کاربرتون رو تو جدول وارد کنید و با زدن دکمه خروج همزمان با ازبین بردن سشن نام کاربری کاربر رو از جدول حذف کنید
به این شکل هم تعداد کاربران انلاین رو دارید هم نام کاربریشون رو :لبخند:
بعضی سایتا تشخیص میدن اگه 10 دقیقه توی سایت حرکتی نداشته باشی
آقلاین رد میکنن

m.esmaeilzadeh
چهارشنبه 05 فروردین 1394, 12:45 عصر
ساده ترین راه پیاده سازی این هست که شما با هر بازدید مقدار یک عدد در دیتابیس رو با عدد 1 جمع کنی !
ولی وقتی بحث افراد آنلاین و آرشیو های بازدید وسط میاد باید نه تنها session ها رو داخل دیتابیس نگهداری بلکه باید در یک جدول جدا بیای برای هر بازدید تاریخ و مقدار ip و غیره رو هم نگهداری کنی !!!
این هم کارای اساتید دانشگاه عه دیگه , زمان دانشجویی ما هم از این حرف ها زیاد میزدن :لبخند:

ABZiko
چهارشنبه 05 فروردین 1394, 13:07 عصر
بهترین راه همونی هست که ali.webdesign (http://barnamenevis.org/member.php?325122-ali-webdesign) عزیز گفتن، از اون روش Session هم برای مثال در نمایش دادن آنلاین و آفلاین کاربران برای یک چت روم هم استفاده می شه و شما برای کاربران سایتتون هم می تونید از اون استفاده کنید ...

olampiad
شنبه 08 فروردین 1394, 19:35 عصر
بعضی سایتا تشخیص میدن اگه 10 دقیقه توی سایت حرکتی نداشته باشی
آقلاین رد میکنن

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

olampiad
شنبه 08 فروردین 1394, 19:42 عصر
ساده ترین راه پیاده سازی این هست که شما با هر بازدید مقدار یک عدد در دیتابیس رو با عدد 1 جمع کنی !
:لبخند:
تشکر فراوان از دوستان بابت راهنمایی هاشون
منظور شما اینه که من یک عدد رو در دیتابیس ذخیره کنم و موقعی که کسی از سایت بازدید کرد یدونه به اون عدد اضافه کنم.
مثلا عدد دیتابیس من اینه 987
وقتی یک نفر از سایت بازدید کرد بشه 988 و به مرور با بازدید از سایت به عدد اضافه شه.
آیا منظورتون این بود؟
اگه منظورتون این بود من چطوری به تاریخ بازدید کاربران دسترسی داشته باشم؟
مرسی

olampiad
شنبه 08 فروردین 1394, 20:05 عصر
چند تا سوال دیگه هم داشتم که بی زحمت بپرسم.
من الآن یه جدول دارم که آی پی و زمان بازدید افراد رو در اون ذخیره میکنه.
میخوام ی قانونی بزارم که هرکاربر فقط میتونه تو بیست و چهار ساعت فقط یک بار از سایت بازدید کنه منظورم اینه که وقتی کسی تو ی روز ده بار هم به سایت مراجعه کرد فقط یک ردیف به جداول من اضافه بشه.
من چطوری میتونم تشخیص بدم که بازدید کننده چند روز پیش به سایت من مراجعه کرده.من زمان بازدید همه ی افراد رو به این صورت دارم
1424212372
1424346442
1424347557
و...
با چ تابعی تشخیص بدم که این زمان بازدید کم تر از بیست و چهار ساعت پیش اتفاق افتاده یا بیشتر از بیست و چهار ساعت پیش اتفاق افتاده؟
امید وارم منظورمو متوجه شده باشین.

من زمان های بازدید کاربران رو به این صورت ذخیره کردم
1424212372
1424346442
1424347557
و...
با چ توابعی بفهمم که این بازدید ها واسه امروزه یا دیروزه یا یه هفته قبله؟
میشه تو این زمینه هم ی کوچولو راهنماییم کنید.
خیلی ممنون

ali.webdesign
یک شنبه 09 فروردین 1394, 10:48 صبح
برای رفع مشکل مرورگر میتونید آخرین زمان فعالیت کاربر رو توی جدول کاربران آنلاین ذخیره کنید بعد هر 2 دقیقه چک کنید اگه آخرین زمان حضور کاربر در سایت یا فعالیت در سایت بیشتر از 5 دقیقه بود کاربر رو از جدول حدف کنید.

برای سوال آخرتون هم اگه از کلاس pdate استفاده می کنید میتونید به این شکل تاریخ رو بدست بیارید

<?php echo pdate('Y/m/d','1424347557'); ?>

ضمنا برای تشخیص فاصله زمانی میتونید 86400 رو که نمایانگر تعداد ثانیه های یک روزه رو در تعداد روز ضرب کنید و حاصل رو مقایسه کنید


اگه هم میخواید زمان آخرین فعالیت کاربر رو با زمان فعلی مقایسه کنید و ببینید بیشتر از 5 دقیقه هست یا خیر میتونید به این شکل عمل کنید

time()-'1424347557'>'300'

در اینجا 1424347557 زمان آخرین فعالیت کاربر و تابع time زمان فعلی رو نشون میده عدد 300 هم نمایانگر 5 دقیقه هست

اگه سوالی داشتید بپرسید

olampiad
یک شنبه 09 فروردین 1394, 12:32 عصر
تشکر فراوان از دوست عزیز
واقعا توضیح فوق العاده ای بود.
فقط چند تا سوال واسم پیش اومده.(ببخشین قدرت تحلیل من خیلی پایینه به همین دلیل خیلی اذیتتون کردم).
شما گفتین از هر دو دقیقه یکبار زمان حضور کاربر رو چک کنم.با چه تابعی میتونم این کار رو انجام بدم.منظورم اینه که چ تابعی میتونه دو دقیقه رو برای من حساب کنه.

و سوال دیگه
آمار بازدیدی که میخوام بنویسم به این شکله:
آمار بازدید امروز
آمار بازدید دیروز
آمار بازدید این هفته
آمار بازدید این ماه

حالا خواستم ببینم:
برای آمار بازدید امروز از الآن تا 24 ساعت قبل رو حساب میکنم.
برای آمار بازدید دیروز از الآن تا 48 ساعت قبل رو حساب میکنم.
برای آمار بازدید این هفته از الآن تا 168 ساعت قبل رو حساب میکنم.
و...

خواستم ببینم این روشی که من میخوام حساب کنم درسته؟
مرسی

ali.webdesign
یک شنبه 09 فروردین 1394, 18:23 عصر
اول باید یه جدول بسازید که دارای فیلدهای بازدید امروز،بازدید دیروز،بازدید هفته و بازدید ماه و بازدید کل باشه دو تا هم فیلد میخواد که تو یکیش تاریخ امروز باشه و دیگری تاریخ آخرین شنبه هفته
فیلد تاریخ امروز روزانه آپدیت میشه و فیلد تاریخ اخرین شنبه هم هر هفته آپدیت میشه

حالا یه فایل باید درست کنید که هر شب ساعت 12 با کران جاب اجرا بشه

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

حالا برای بازدید هفته هم چک کنید تاریخ امروز از تاریخ هفته اگه هفت روز بیشتر بود بازدید هفته صفر بشه و تاریخ هفته هم اپدیت بشه (تاریخ هفته رو میتونی بصورت 1424347557 ذخیره کنی )

برای بازدید ماه هم باید کار با تابع pdate رو بلد باشید

مثلا تو این کد که روز رو به ما میده باید چک کنید اگه برابر 1 بود یعنی ماه جدیده و باید بازدید ماه رو صفر کنی

<?php echo pdate('d'); ?>

olampiad
چهارشنبه 12 فروردین 1394, 16:35 عصر
سلام و خسته نباشید
فیلد تاریخ امروز و آخرین شنبه رو با استفاده از کران جاب آپدیت کنم.یا هر کسی که از سایت بازدید کرد ، همون لحظه تاریخ بازدید شخص رو جایگزین تاریخ امروز بشه؟
تو اینجا کمی گیر کردم.

olampiad
چهارشنبه 12 فروردین 1394, 16:51 عصر
برای رفع مشکل مرورگر میتونید آخرین زمان فعالیت کاربر رو توی جدول کاربران آنلاین ذخیره کنید بعد هر 2 دقیقه چک کنید اگه آخرین زمان حضور کاربر در سایت یا فعالیت در سایت بیشتر از 5 دقیقه بود کاربر رو از جدول حدف کنید.



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

و ی سوال دیگه
شما گفتین : آخرین زمان فعالیت کاربر رو توی جدول کاربران آنلاین ذخیره کنید.
من باید یه تابع توی header سات قرار بدم و کاربر هربار که در سایت صفحه ای رو بازکرد همون لحظه زمان آنلاین بودن کاربر رو آپدیت کنم و زمان جدید رو جایگزین زمان قبلی کنم.
به نظرتون برداشت من از حرف های شما درست بوده یا نه؟
مرسی

MMSHFE
پنج شنبه 13 فروردین 1394, 08:23 صبح
از Cron Jobs استفاده کنید.