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

فكرة جعل المستخدمين لهم محاولات معينة في اليوم

محمود موسى2

السؤال

السلام عليكم، 

لدي موقع لعرض محتوى لا يهم ما هو المحتوى ولكن المحتوى هذا يعرض للمستخدمين بشكل عشوائي من قاعدة البيانات, أريد جعل لكل مستخدم 5 محاولات فقط ف اليوم فكيف اعمل مثل هذه الفكرة؟ 

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

Recommended Posts

  • 0

ما هي البرمجه المستخدمة في انشاء الموقع 

على كل حال باختلاف نوع البرمجة ساقترح الفكرة 
قم بانشاء جدول يحتوي على التالي 
رقم المستخدم - تاريخ اليوم - رقم الموضوع المعروض 

ثم تقوم بالبحث اولا في هذا الجدول بتاريخ اليوم و عدد السجلات للمستخدم في هذا اليوم 

اذا كان  5 يظهر له مواضيعه ال 5 اليوميه 

اذا كان اقل يظهر له المواضيع التي قرأها اليوم و الموضوع الجديد و يتم اضافة سجل جديد بالبيانات السابقه في الجدول 

و في دالة العرض العشوائيه تبحث عن مواضيع عشوائية و تستثني منها مواضيع اليوم 

كان هذا مخطط  تنفيذ الفكرة 

 

تم التعديل في بواسطة محمد الملواني
رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

مرحبا محمود,

في حال كان هذا النظام أو الأداة للزوار, يمكنك فعل ذلك عن طريق أن تتعرف على المستخدمين من خلال ال IP Address الخاص به, حيث يعرف ال IP والذي هو اختصار لكلمة (Internet protocol) وهو عنوان يستخدم للأجهزة من حواسيب وهواتف وأي جهاز محمول متصل بالإنترنت والغرض منه تحديد مكان أو عنوان المستخدم داخل الشبكة ويمكن تمثيله برقم الهاتف فمثلاً رقم الهاتف لا يمكن أن يتكرر وكذلك ال IP Address, وباستخدامك لل IP Address . فهذه هي أسهل وأسرع طريقة لفعل ذلك حيث أنك تحتفظ به لديك في قاعدة البيانات, ففي حال كان المستخدم قد يدخل لأول مرة إلى الموقع تقوم بتسجيل ال IP الخاص به لديك وتقوم بعرض البيانات أو المحتوى اللازمة عليه وتشغيل العداد أو المحاولات له, أما في حال كان المستخدم موجود مسبقاً تقوم بالعد أو حساب المحاولات على نفس رقمه الموجود لديك.

أما في حال كان لديك نظام تسجيل دخول أو للستخدمين الذين يملكون حسابات حتى تقوم بعرض البيانات, فيمكنك القيام بذلك لكل مستخدم حيث في حال قام المستخدم بتسجيل الدخول فتقوم بعرض البيانات له مع العد لعدد المحاولات.

بالتوفيق.

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

  • 0

يمكن من خلال ال 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

مرحبا محمود،

التصميم الأولي:

لدينا جدولين المستخدمين و المنشورات والعلاقة بينهم many to many.

يتم اسقاط هذه العلاقة في جدول جديد ندعوه سجل المشاهدات فرضاً.

إذا قام مستخدم ما باستعراض موضوع عشوائي معين (بعد فتح الموقع نعرض له أول موضوع) (نشكل رقم عشوائي لجلب المنشور الجديد و نتأكد من عدم وجوده في سجل المشاهدات لنفس هذا المستخدم) , بعد تحميل المنشور نضيف لجدول المشاهدات سجل جديد بتاريخ اليوم (المستخدم - المنشور - تاريخ اليوم)..

بنية سجل المشاهدات : يحوي رقم المستخدم و رقم المنشور و تاريخ القراءة.

إن موضوع تسجيل جميع المشاهدات التي قام بها مستخدم ما يمنع إمكانية تكرار عرض نفس المنشور له في يومِ آخر..

(( يمكنك عرض المنشورات التي قرأها باستعلام بسيط وعرضها في قائمة جانبية حيث يتسنى للمستخدم إعادة قراءة هذه المنشورات في حال قام بالتصفح خلال نفس اليوم))

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

- إذا كنت لا تريد حفظ المنشورات لكل مشاهدة سيعرض منشورات مكررة.

- بما أن المشاهدات تكون بشكل متسلسل فإن التواريخ تكون مرتبة ما يمكنك من الاعتماد على هذه الختصية لتسريع القيام بالاستعلامات.

بالتوفيق

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

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

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

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

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...