كيفية تقييد المستخدم بعدم التصويت على مقال أكثر من مرة؟

StackOverflow https://stackoverflow.com/questions/3433391

  •  26-09-2019
  •  | 
  •  

سؤال

في طلبي ، يمكن للمستخدم نشر مقالته/أن المستخدمين الآخرين يمكنهم الاستجابة عند التصويت لأعلى ولأسفل مثل StackOverflow على إجابات السؤال المنشورة.

كيف يمكنني تقييد المستخدم حتى لا يستطيع التصويت مرتين؟

هل كانت مفيدة؟

المحلول

طريقتين:

  • جانب العميل: تعيين في ملف تعريف الارتباط (معرفات المقالة لآخر 5 أو 10 أصوات) ولا تسمح بالتصويت مرة أخرى. هذا يمكن اختراقه بسهولة ولكنه يسمح لك بالتنفيذ دون أي تغييرات قاعدة بيانات!
  • جانب الخادم: تتبع كل تصويت وأصوت في طاولة مثل <{userID}, {vote UP/DOWN}, {articleID}>

يستخدم Stackoverflow قاعدة البيانات لتخزين كل هذه البيانات. كما أنها تغلق صوتك بعد فترة ما حتى لا يمكنك التراجع عن عملك.

نصائح أخرى

مجرد تخزين معرف المستخدم في جدول التصويت.
لذلك ، يمكنك دائمًا التحقق مما إذا كان مستخدم معين قد تم تصويته بالفعل.
معرف المقال ، معرف المستخدم ، وقت التصويت وأعمدة قيمة التصويت كافية

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

ستحتاج إلى استخدام نوع من البرمجة النصية من جانب الخادم لتذكر المستخدمين حسب IP أو بعض البيانات الفريدة الأخرى. سيكون عليك تخزين IP أو بيانات أخرى وتذكره. عندما يحاول المستخدم التصويت لأعلى/لأسفل مرة أخرى ، يجب عليك التحقق من ذلك لمعرفة ما إذا كان يجب عليك السماح لهم بذلك. يجب أن تدعهم يفعلون العكس ، في حالة رغبتهم في تغيير تصويتهم. يمكنك القيام بذلك مع PHP و MySQL (والكثير من الأشياء الأخرى).

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top