شكراً Bruce ..
كنت قد صنعت نظاماً مشابهاً منذ فترة .. سأضع الكود للإفادة ( الكود ناقص، أحببت أن أشارك بالفكرة فقط ) :
كود PHP:
/* Random Quess - SPAM CHALLENGE !! */
// 0: +, 1: -, 2: max, 3: min
$quesstype = rand(0,3);
$firstnum = rand(0,10);
$secnum = rand(0, ($quesstype > 1 ? 10 : 10 - $firstnum));
$nums = array();
$nums[] = array('num' => $firstnum, 'letters' => num2letters($firstnum));
$nums[] = array('num' => $secnum, 'letters' => num2letters($secnum));
if ($quesstype != 1) shuffle($nums);
$spam = array('type' => $quesstype, 'nums' => $nums);
$smarty->assign('spam', $spam);
$result = ($quesstype == 0 ? $firstnum + $secnum : ($quesstype == 1 ? $firstnum - $secnum : ($quesstype == 2 ? max($firstnum, $secnum) : min($firstnum, $secnum))));
$query = mysql_query('insert into `nospam` (`time`, `num`) values ('. $time .', '. $result .')');
حيث أن دالة num2letters هي لتحويل الأرقام إلى الكتابة:
كود PHP:
function num2letters($num) {
switch($num) {
case 0: return 'صفر';
case 1: return 'واحد';
case 2: return 'اثنان';
case 3: return 'ثلاثة';
case 4: return 'أربعة';
case 5: return 'خمسة';
case 6: return 'ستة';
case 7: return 'سبعة';
case 8: return 'ثمانية';
case 9: return 'تسعة';
case 10: return 'عشرة';
}
}
طبعاً سيتم إدخال النتيجة مع كود عشوائي أو الوقت الحالي إلى جدول nospam كما في الكود، ويتم وضع الكود العشوائي في input من نوع hidden في الصفحة، وفي صفحة التحقق يتم أخذ الكود العشوائي من الـ input وجلب الـ result المتعلقة به من الجدول في قاعدة البيانات ومقارنة الإجابة المكتوبة بالـ result المجلوبة من القاعدة ..
هذه هي الفكرة ببساطة، وأحببت أن أشارك بها لأنها تتضمن الجمع والطرح والقيمة الكبرى والقيمة الصغرى ،
شكراً لطرحك مرة أخرى ،
تحياتي، أشرف السمهوري