اريد تحديد Limit الضغط علي اللينك للعضو مره كل 24 ساعه

بفضل الله ثم فضل بعض الأعضاء المتميزين في حسوب io ثم فضل تجربتي , استطعت عمل التحقق من قاعده البياانات علي هذا العضو ضغط علي هذا اللينك ام لا..

لكن توقف امامي شيء لم استطع فعله وهو كيف اقوم بجعل ان العضو يستطيع الضغط علي اللينك كل 12 ساعه او كل 24 ساعه واكون شاكر جداً لكم.

يرجى الدخول لحسابك أو تسجيل حساب لتستطيع إضافة تعليق
حساب جديد دخول

التعليقات

هناك طريقتين لعمل ذلك

1- قم بعمل cron job تقوم بمسح جدول الضغط كل 12 أو 24 ساعة كما تريد وعندما تقوم بالفحص بعد المدة المحددة لن تجد معلومات سابقة وبالتالي تسمح له بالضغط

2-إذا كانت معلومات الضغط مهمة ويجب الاحتفاظ بهاوعدم مسحها فيمكنك تسجيل وقت وتاريخ الضغط وعند الفحص للضغطات التالية تقوم بطرح تاريخ اخر ضغطة مع التاريخ الحالي وإذا أكبر من او يساوي المدة التي تريدها تسمح بالضغط

أعتقد أن الخيار الثاني هو الافضل مع مراعاة التالي:

أن يقوم بتحديث آخر مرة فُتح فيها الرابط بعد كل مرة

اعتقد بالنسبة لي افضل الخيار الاول ... المعلومات غير مهمه انا قمت بعمل هذا الجدول مخصوص لهذا لذلك المعلومات غير مهمه والخيار الاول افضل شكراً لك.

استسمحك هل من فضلك تقوم باخباري عن فكرة الخيار الثاني لاني لم استطيع فهمها

هل تقصد ( ان اقوم بحفظ وقت الضغط في القاعده علي سبيل المثال y-m-d H:i |||| وعند كود الفحص لضغطة الشخص اقوم بعمل [[[ y-m-d H:i < $thistime ]]] ؟؟؟

هل هذا بالضبط ماتقصد ام تقصد شيء اخر؟

هناك طريقيتن للخيار الثاني

  • تقوم بتسجيل كل ضغطة اي تقوم ب insert دائما مع وقت حدوثها created_at إذا كان تاريخ الضغطة السابقة اكبر من أويساوي المدة المحددة

       read user_clicks where user=? and link=?
       if ( $thistime - created_at ) >=24
       then insert new user_click
    
  • ان تقوم بتسجيل الضغطة مرة واحدة فقط والضغطات التالية عبارة عن تعديل للتاريخ last_clicked

    read user_clicks where user=? and link=?
    
     if (  $thistime - last_clicked ) >=24
    
      then update user_click set last_clicked = $thistime
    

نعم لقد فهمت بالضبط ,, شكراً لك.

Primo أضف ردا

اسف اخي الكريم علي كثرة أسألتي .. هذا الكود الخاص بي هل صحيح ام يوجد شيء خطأ

http://pastebin.com/A03Tjgur

tasyjean أضف ردا

اظن ان هناك خطأ ما، الكود الذي كتبته بالاعلي هو pusdocode أي مجرد كود لشرح الفكرة وليس كود حقيقي لأي لغة. ويبدو إنك ظننته كود حقيقي واستخدمته

وبالبنسبة للفكرة فيجب أن تقول بعمل select أولا لتجلب اخر عملية ضغط هكذا

 select * from user_links where user=? and link=? order by last_clicked desc limit 1

وبعدها يمكنك اجراء الفحص علي التوقيت

ملاحظة: لا اجيد لغة بي اتش بي وبالتالي لن استطيع افادتك بالكود الفعلي للبي اتش بي، استطيع شرح الفكرة فقط

انا قمت بعمل select بالتأكيد لكني لم اكتبها في هذا الكود,, وما الفرق بين الكود لشرح الفكره والكود الحقيقي لم اسمع عن هذه من قبل !!!

pesudocode هو كود غير حقيقي أي غير قابل للترجمة للغة الالة أو التنفيذ، يستخدم فقط لشرح الافكار والخوارزميات ويكتب بلغة كالتي نتخدث بها وليس بمفردات لغة برمجة معينة، علي سبيل المثال في الاعلي كتبت

if
then

السي شارب مثلا لا يوجد بها then بينما توجد في بعض اللغات الاخري فبدلا من التقيد بقوانين اللغة يتم شرح الفكرة بطريقة بسيطة بغض النظر عن اللغة البرمجة الحقيقة وهو ما يجعلني قادر علي التحدث عن كيفية عمل ما تريد بالرغم من اني لا اجيد البي اتش بي

https://ar.wikipedia.org/wikiسودوكود

لقد قمت بوضع then لانك كتبتها لي وعند قمت بوضعها ظهر لي خطأ لكني لم اعلم ان then هي الخطأ.