محمود موسى2 نشر 9 ديسمبر 2020 أرسل تقرير نشر 9 ديسمبر 2020 السلام عليكم، لدي موقع لعرض محتوى لا يهم ما هو المحتوى ولكن المحتوى هذا يعرض للمستخدمين بشكل عشوائي من قاعدة البيانات, أريد جعل لكل مستخدم 5 محاولات فقط ف اليوم فكيف اعمل مثل هذه الفكرة؟ 1 اقتباس
0 محمد الملواني نشر 9 ديسمبر 2020 أرسل تقرير نشر 9 ديسمبر 2020 (معدل) ما هي البرمجه المستخدمة في انشاء الموقع على كل حال باختلاف نوع البرمجة ساقترح الفكرة قم بانشاء جدول يحتوي على التالي رقم المستخدم - تاريخ اليوم - رقم الموضوع المعروض ثم تقوم بالبحث اولا في هذا الجدول بتاريخ اليوم و عدد السجلات للمستخدم في هذا اليوم اذا كان 5 يظهر له مواضيعه ال 5 اليوميه اذا كان اقل يظهر له المواضيع التي قرأها اليوم و الموضوع الجديد و يتم اضافة سجل جديد بالبيانات السابقه في الجدول و في دالة العرض العشوائيه تبحث عن مواضيع عشوائية و تستثني منها مواضيع اليوم كان هذا مخطط تنفيذ الفكرة تم التعديل في 9 ديسمبر 2020 بواسطة محمد الملواني اقتباس
0 أسامة كمال النبريص نشر 9 ديسمبر 2020 أرسل تقرير نشر 9 ديسمبر 2020 مرحبا محمود, في حال كان هذا النظام أو الأداة للزوار, يمكنك فعل ذلك عن طريق أن تتعرف على المستخدمين من خلال ال IP Address الخاص به, حيث يعرف ال IP والذي هو اختصار لكلمة (Internet protocol) وهو عنوان يستخدم للأجهزة من حواسيب وهواتف وأي جهاز محمول متصل بالإنترنت والغرض منه تحديد مكان أو عنوان المستخدم داخل الشبكة ويمكن تمثيله برقم الهاتف فمثلاً رقم الهاتف لا يمكن أن يتكرر وكذلك ال IP Address, وباستخدامك لل IP Address . فهذه هي أسهل وأسرع طريقة لفعل ذلك حيث أنك تحتفظ به لديك في قاعدة البيانات, ففي حال كان المستخدم قد يدخل لأول مرة إلى الموقع تقوم بتسجيل ال IP الخاص به لديك وتقوم بعرض البيانات أو المحتوى اللازمة عليه وتشغيل العداد أو المحاولات له, أما في حال كان المستخدم موجود مسبقاً تقوم بالعد أو حساب المحاولات على نفس رقمه الموجود لديك. أما في حال كان لديك نظام تسجيل دخول أو للستخدمين الذين يملكون حسابات حتى تقوم بعرض البيانات, فيمكنك القيام بذلك لكل مستخدم حيث في حال قام المستخدم بتسجيل الدخول فتقوم بعرض البيانات له مع العد لعدد المحاولات. بالتوفيق. اقتباس
0 محمد الملواني نشر 9 ديسمبر 2020 أرسل تقرير نشر 9 ديسمبر 2020 اذا كنت تجد صعوبة في تنفيذ الكود برجاء ارسال كود العرض العشوائي من قواعد البيانات لتسهيل انشاء كود مناسب اقتباس
0 Omar Haddad2 نشر 9 ديسمبر 2020 أرسل تقرير نشر 9 ديسمبر 2020 يمكن من خلال ال ip للزوار لتخزين محاولات التسجيل في قاعدة البيانات وحظر الوصول إلى ميزة تسجيل الدخول لمدة 24 ساعة مثل ا بعد المحاولة الثالثة غير الناجحة أو للوقت الذي تريده , ٍسأقوم بتوضيح لك الخطوات في لغة php : في البداية ، تحتاج إلى إنشاء جدول جديد في قاعدة البيانات الخاصة بك لتخزين معلومات حول محاولات تسجيل الدخول من جهاز كمبيوتر معين. أنشأ مثل هذا الجدول : CREATE TABLE `LoginAttempts` ( `IP` VARCHAR( 20 ) NOT NULL , `Attempts` INT NOT NULL , `LastLogin` DATETIME NOT NULL ) من المفترض أن يكون لديك صفحة خاصة بالمصادقة أي صفحة تسجيل الدخول , و يجب أن تعمل صفحة المصادقة مع جدولين: جدول واحد حيث يتم تخزين المعلومات حول المستخدمين المسجلين والآخر حيث يتم حساب وإختبار محاولات تسجيل الدخول غير الناجحة. وذلك قبل التحقق من البيانات المدخلة ، يجب على النظام التحقق مما إذا كان المستخدم قد تجاوز حد المحاولات أم لا. إذا كان هناك أكثر من سجلين أي صفين (2 row )في جدول LoginAttempts لعنوان IP واحد ، فستظهر رسالة خطأ تفيد بأن الوصول محظور لفترة زمنية معينة. يمكنك تحديد فترة زمنية حسب ما تريد . في المثال التالي ، سيتم سأقوم بالحظر الوصول لمدة 30 دقيقة. <?php function confirmIPAddress($value) { $q = "SELECT attempts, (CASE when lastlogin is not NULL and DATE_ADD(LastLogin, INTERVAL ".TIME_PERIOD. " MINUTE)>NOW() then 1 else 0 end) as Denied FROM ".TBL_ATTEMPTS." WHERE ip = '$value'"; $result = mysql_query($q, $this->connection); $data = mysql_fetch_array($result); //تحقق من وجود محاولة تسجيل دخول واحدة على الأقل في قاعدة البيانات if (!$data) { return 0; } if ($data["attempts"] >= ATTEMPTS_NUMBER) { if($data["Denied"] == 1) { return 1; } else { $this->clearLoginAttempts($value); return 0; } } return 0; } function addLoginAttempt($value) { //زيادة عدد المحاولات قم بتعيين آخر محاولة تسجيل دخول إذا لزم الأمر $q = "SELECT * FROM ".TBL_ATTEMPTS." WHERE ip = '$value'"; $result = mysql_query($q, $this->connection); $data = mysql_fetch_array($result); if($data) { $attempts = $data["attempts"]+1; if($attempts==3) { $q = "UPDATE ".TBL_ATTEMPTS." SET attempts=".$attempts.", lastlogin=NOW() WHERE ip = '$value'"; $result = mysql_query($q, $this->connection); } else { $q = "UPDATE ".TBL_ATTEMPTS." SET attempts=".$attempts." WHERE ip = '$value'"; $result = mysql_query($q, $this->connection); } } else { $q = "INSERT INTO ".TBL_ATTEMPTS." (attempts,IP,lastlogin) values (1, '$value', NOW())"; $result = mysql_query($q, $this->connection); } } //هنا نقوم بإزالة عدد المحاولات وإستدعاء هذه الدالة بعد مرور الوقت المطلوب function clearLoginAttempts($value) { $q = "UPDATE ".TBL_ATTEMPTS." SET attempts = 0 WHERE ip = '$value'"; return mysql_query($q, $this->connection); } ?> اقتباس
0 Wael Aljamal نشر 9 ديسمبر 2020 أرسل تقرير نشر 9 ديسمبر 2020 مرحبا محمود، التصميم الأولي: لدينا جدولين المستخدمين و المنشورات والعلاقة بينهم many to many. يتم اسقاط هذه العلاقة في جدول جديد ندعوه سجل المشاهدات فرضاً. إذا قام مستخدم ما باستعراض موضوع عشوائي معين (بعد فتح الموقع نعرض له أول موضوع) (نشكل رقم عشوائي لجلب المنشور الجديد و نتأكد من عدم وجوده في سجل المشاهدات لنفس هذا المستخدم) , بعد تحميل المنشور نضيف لجدول المشاهدات سجل جديد بتاريخ اليوم (المستخدم - المنشور - تاريخ اليوم).. بنية سجل المشاهدات : يحوي رقم المستخدم و رقم المنشور و تاريخ القراءة. إن موضوع تسجيل جميع المشاهدات التي قام بها مستخدم ما يمنع إمكانية تكرار عرض نفس المنشور له في يومِ آخر.. (( يمكنك عرض المنشورات التي قرأها باستعلام بسيط وعرضها في قائمة جانبية حيث يتسنى للمستخدم إعادة قراءة هذه المنشورات في حال قام بالتصفح خلال نفس اليوم)) نكرر العملية بالقيام باستعلام يعد عدد مرات وجود سجل مشاهدة لهذا المستخدم في هذا اليوم. - إذا كنت لا تريد حفظ المنشورات لكل مشاهدة سيعرض منشورات مكررة. - بما أن المشاهدات تكون بشكل متسلسل فإن التواريخ تكون مرتبة ما يمكنك من الاعتماد على هذه الختصية لتسريع القيام بالاستعلامات. بالتوفيق اقتباس
السؤال
محمود موسى2
السلام عليكم،
لدي موقع لعرض محتوى لا يهم ما هو المحتوى ولكن المحتوى هذا يعرض للمستخدمين بشكل عشوائي من قاعدة البيانات, أريد جعل لكل مستخدم 5 محاولات فقط ف اليوم فكيف اعمل مثل هذه الفكرة؟
5 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.