السبت، 9 مارس 2013

كيفية برمجة كابتشا العمليات الحسابية بسهولة؟

بسم الله الرحمن الرحيم،
فى هذا الدرس سنتعرف على كيفية برمجة كابتشا بسيطة عن طريقة العمليات الحسابية، وفى هذا الدرس سنتعرف على كيفية عمل ذلك بعملية الجمع والطرح، ويمكنك فيما بعد تطويره ليشمل أكثر من عملية فى وقت واحد. تعتبر كابتشا العمليات الحسابية حلًا سهلاً وسريعًا لمن يريدون إنجاز برنامج ما ، حيث أن برمجة الكابتشا العادية تأخذ وقت كبير، أما كابتشا العمليات الحسابية لن تأخذ أكثر من 25 سطر !
وسينقسم الدرس إلى جزئين:- 1- فهم عملية الكابتشا. 2-البدء فى صنعها ،، فلنذهب الآن للدخول فى الدرس.
- فهم عملية الكابتشا.
تقوم تلك العملية ببساطة بالطلب من المستخدم إدخال ناتج عملية حسابية، ومن ثم مقارنة ما كتبه المستخدم بالناتج الحقيقي لتلك العملية، مع العلم أن تلك العملية عشوائية، حيث أن الأرقام التى تظهر فى تلك العملية هي أرقام عشوائية، تتغير كل مرة، مع طبعًا وضع شروط للتأكد من إن كان المستخدم قد قام بالقيام بتلك العملية مسبقًا، فإن قد قام بها بشكل صحيح من قبل فلن تظهر له مرة أخرى.
- البدء فى صنعها.
بداية سنقوم ببدء الجلسة عبر هذا السطر:
session_start();
والآن نقوم بعمل متغير للعملية التى سنقوم بها عبر هذا السطر:
$add = $_REQUEST['add'];
والآن نقوم بوضع شرط إذا ما كان هناك متغير للعملية، فإن لم يكن هناك متغير للعملية فسنقوم بالبدء فى عرض نموذج الكابتشا:
if (!isset($add)){
?>
<form method="post" action="<?php echo $_SERVER['PHP_SELF'];
?>">
والآن نقوم بفتح الـPHP مرة أخري ونقوم بعمل متغيرين بهما أعداد عشوائية من 1 إلى 9 ، ثم نقوم بوضع نص العملية الحسابية فى متغير ثالث، ومن ثم طباعة المتغير الثالث وبذلك تكون هناك عملية حسابية عشوائية تم عرضها على المستخدم، ثم بعد ذلك نقوم بإدخال ناتج جمع الرقمين الذي تم عرضهما على المستخدم فى الجلسة Session:
<?php
$num1 = rand(0,9);
$num2 = rand(0,9);
$num = "$num1". " + " . "$num2";
echo $num;
$_SESSION['captchacode'] = $num1 + $num2;
?>
والآن نقوم بعرض input للمستخدم لكي يقوم بإدخال الناتج فيه:
<input type="text" name="cap" /> <input type="submit" name="submit" value="submit" /> <input type="hidden" name="add" value="add" /> </form>
لاحظ أننا كل هذا فى أول شرط، ولم نغلقه حتى الآن، والآن نقوم بفتح PHP مرة أخرى ونقوم بوضع else للشرط الذي كتبناه فى الأعلى، وبداخل else سنقوم بوضع شرط آخر وهو ما إذا كان ناتج عملية الجمع التي تم تسجيلها فى الجلسة مساوية لما ادخله المستخدم أم لا ، أو ما إذا كان متغير الجلسة التى يحمل ناتج عملية الجمع فارغًا فسيعرض للمستخدم رسالة خطأ، ثم نقوم بعمل else لهذا الشطر وبه رسالة نجاحه فى إدخال الكابتشا:
<?php
}
else{
if($_POST['cap'] != $_SESSION['captchacode'] OR $_SESSION["captchacode"]=='')
{
die("Failed");
}else{
echo "Good";
} } ?>
وبهذا تصبح كل الشيفرة عبارة عن 25 سطر فقط ، وتلك هي السطور كاملة:
<?php
session_start();
$add = $_REQUEST['add'];
if (!isset($add)){
?>
<form method="post" action="<?php echo $_SERVER
['PHP_SELF'];
?>">
<?php
$num1 = rand(0,9);
$num2 = rand(0,9);
$num = "$num1". " + " . "$num2";
echo $num;
$_SESSION['captchacode'] = $num1 + $num2;
?> <BR /><input type="text" name="cap" />
<input type="submit" name="submit" value="submit" /> <input type="hidden"
name="add" value="add" /> </form> <?php
}
else{
if($_POST['cap'] != $_SESSION['captchacode'] OR $_SESSION["captchacode"]=='')
{
die("Failed");
}else{
echo "Good";
} } ?> 

تستطيع الآن تجربة تلك الطريقة وإستخدامها فى برامجك، عبر 25 سطر فقط تستطيع برمجة كابتشا ... أليس رائعًا؟ 




المزيد من المواضيع:

0 التعليقات:

إرسال تعليق