PDA

View Full Version : چک کردن ip کاربر برای سیستم رای گیری



payamka
شنبه 19 دی 1388, 09:54 صبح
سلام
من ميخوام يه سيستم شبيه به امتياز دادن بسازم که هر کاربر که از روي آي پي مشخص ميشه در هر 12 ساعت فقط بتونه يک بار راي بده.
يه جدول هست که توي اون دو تا فيلد ip و timelabel وجود داره که آي پي کاربر و برچسب زمان راي دادن که از طريق تابع time() در php توليد ميشه نگهداري ميشه. يه جدول ديگه هم هست که title و point و id داره که چيزهايي که بهشون راي داده ميشه اونجا نگهداري ميشن.
حالا فرض کنيد يه صفحه ي xyz.php داريم که هر کاربر که بخواد امتياز بده اين صفحه براش به صورت xyz.php?id=1 باز ميشه و id همون کليد شناسايي رکورديه که امتياز ميگيره.
حالا بايد چک بشه اگه اي آپي که الان مي خواد راي بده قبلا راي داده يا نه اگه راي داده آيا از 12 ساعت بيشتر بوده يا کمتر يا اگه راي نداده يک امتياز به point اضافه ميشه و بعد از اين هم به صفحه ي index.php ريدارکت بشه.
ببخشيد که طولاني شد.اگه ميشه کدشو بذاريد.
باتشکر

nextplus
شنبه 19 دی 1388, 22:45 عصر
دوست عزيز من تا حدودي منظورت رو متوجه شدم؛ اما نه كامل

اگه لاگ راي ها برات اهميت نداره ميتوني از اين روش استفاده كني.

1- جدول داده ها بهمراه فيلد راي رو جدا نگه دار.
2- يك جدول موقت ايجاد كن كه داخلش راي دهندگان اين 12 ساعت يا اين روز رو نگه داره

بطوري كه وقتي كسي راي ميده اول بياد ببينه داده هاي جدول موقت براي چه زماني هستند.
اگر بيش از زمان مد نظر شما بود ( 12 ساعت ) اون ركورد ها رو حذف كنه.
حالا بعد از اين كار بياد ببينه اين IP بين ركوردهاي باقيمونده هست يا نه.
اگه نيست خود به شمارنده اصلي راي يك واحد اضافه كنه و بعد تو جدول موقت آي پي رو بهمراه زمان راي ثبت كنه.

فكر كنم تا حدودي ؟؟؟؟!!!!!!؟؟؟؟؟؟:عصبانی++:

بهر حال من خودم از اين روش استفاده كردم و جواب گرفتم.:متفکر:
راستي از time خالي نميشه استفاده كرد بايد date رو هم بهش اضافه كني.:گیج:

payamka
یک شنبه 20 دی 1388, 09:33 صبح
این دو خط رو متوجه نشدم
"بطوری که وقتی کسی رای میده اول بیاد ببینه داده های جدول موقت برای چه زمانی هستند.
اگر بیش از زمان مد نظر شما بود ( 12 ساعت ) اون رکورد ها رو حذف کنه.
"

payamka
یک شنبه 20 دی 1388, 09:47 صبح
جدول موقت چیه؟
آیا میشه جدولی رو ساخت که بعد از 12 ساعت خود به خود خالی بشه؟

nextplus
یک شنبه 20 دی 1388, 11:11 صبح
جدول موقت چیه؟
آیا میشه جدولی رو ساخت که بعد از 12 ساعت خود به خود خالی بشه؟

من مثالم رو برای 1 روز میزنم.
دوست عزیز شما 1 جدول میسازی و داخلش این مقادیر رو نگه میداری.
ip - آی پی طرف
cid - نگهدارنده شناسه رای گیری
vdate - تاریخ رای.

فرض رو بر این میگیریم که شما چند تا مطلب داری که میخوای براش رای گیری کنید .
پس cid میشه شناسه مطلب مد نظر برای رای گیری.

حالا وقتی کاربر میاد صفحه رای گیری اجرا میکنه مثلا xyz.php?id=1 که id( همون شناسه مطلبه)
قبل از هر کاری تمام رکورد های داخل جدول موقت رو که برای روز قبل بوده رو پاک میکنی.
delete from tbl_tmp where vdate < now

حالا select count(*) as from tbl_tmp where cid=id and [ip]=ip

خب حالا اگه null برگشت اول جدول tbl_tmp رو پر کن با مقادیر تاریخ - شناسه و آی پی
بعد مقدار امتیاز مطلب اصلی رو به یکی بالاتر آپدیت کن.

بازم اگه سوالی هست بسم الله.:اشتباه:

payamka
دوشنبه 21 دی 1388, 15:26 عصر
ip خیلی خوبه چون استاتیک نیست!

snail22
دوشنبه 21 دی 1388, 16:08 عصر
سلام دوست عزیز

قبلا هم تاپیک در همین مورد زده بودی من برات جواب دادم
http://barnamenevis.org/forum/showthread.php?t=198926