اذهب إلى المحتوى
  • 0

كيف يمكن جعل الزائر يصوت لمرة واحدة فقط

اسماعيل صدوقي

السؤال

مرحبا ،

في هذا الموقع:

https://t7dy.org/4BvWwp

يقوم الزائر بالتصويت ،لكن لا يمكنه التصويت لأكثر من مرة و أعتقد انه يتم ذلك عن طريق Cookies فلاحظت عند تغيير المتصفح يمكن التصويت مرة أخرى و أيضا عند ايقاف Cookies لا يمكنني التصويت.

كيف يمكنني عمل ذلك داخل موقع مبني بإطار العمل لارافيل؟

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 0

أهلاً بك @اسماعيل صدوقي

يمكن عمل ذلك ليس فقط من خلال الكوكيز , بل من خلال أيضاً sessionStorage أو localStorage , لكن على ما طلبت من خلال الكوكيز يمكنك عمل ميوثود في الكونترولر المسؤول وهذه الميثود وظيفتها تخزين قيمة مثلاً 1 في حالة قام بالتصويت أو 0  في حالة لم يصوت بعد ,لكن لا أنصح بذلك مباشرة لأنه ممكن أن ينشأ عن ذلك ثغرة أمنية , لكن الأفضل عند قيام المستخدم بالتصويت تقوم بحفظ القيمة 1 أو 0 في حقل مثلاً voted بعد ذلك نقوم بإسترجاع تلك القيمة من قاعدة البيانات وتخزينها في الكوكي هكذا مثال نقوم بعمل ميثود لتخزين و إسترجاع الكوكي في الكونترولر هكذا

public function setVotedCookie(Request $request) {
     $minutes = 1;
     $voteResult = Vote::findOrFail($request->id)->setVoted('1');
     $voteResult->withCookie(cookie('isvoted', '1', $minutes));
     return $voteResult;

ثم نقوم بإعادة قيمة الكوكي إلى الواجهة هكذا 

public function getVotedCookie(Request $request) {
     $value = $request->cookie('isvoted');
     return view('main.votes',$value);
  }

بعد ذلك فقط تتأكد من قيمة الكوكي الذي تم إرجاعها في الواجهة مثلاً 

if (!$value == 1) {
     {{echo "Not Voted!"}}
  }else{
    {{echo "Already Voted!,Show Error MSG"}}
  }

,ملاحظة الطريقة المستخدمة في الموقع إن كان قيمة الكوكي فقط تخزن في الجلسة الحالية فطريقة الموقع لا أنصح بها , لأنه ببساطة يمكن للمستخدم تغيير قيمة الكوكي ويصبح لم يصوت ! بينما هو قام بالتصويت ,إن كان لا يوجد عمليات تحقق إضافية .

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...