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

السؤال

نشر

مرحبا ،

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

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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...