<div><div align="center">درس بسيط عن كيفية برمجة كابتشا تعتمد على التعرف على شكل ما
مثال:
ما فائدة الكابتشا؟
تمنع السبام و البوت من التسجيل على موقعك او اضافة محتوى الخ..
لماذا كابتشا تعتمد على صور و ليس التعرف على نص؟
ببساطة الكابتشا التي تعتمد على التعرف على نص ممكن يتجاوزها البوت بسهول بأستخدام تقنية اسمها OCR او Optical Character Recognition التي تستطيع التعرف على اي نص داخل صورة و لهذا السبب يفضل ان لا تستخدم كابتشا تعتمد على التعرف على نص
المتطلبات:
تجميعة بسيطة لأشكال ليتعرف عليها الزائر.. مثلاً 5 صور لـ قطط او 5 صور لـ سيارة او 5 صور لـ كومبيوتر الخ
الكود:
اولاً.. نبني المتغيرات التي ممكن للذي يحب ستخدم الكابتشا ان يغيرها
رمز PHP:
// User must set these
$objects = array("bed", "bird", "book", "cable", "car", "chair", "computer", "currency", "dog", "flowers");
$offset = array("min" => 1, "max" => 5);
$num_solutions = 3;
$num_options = 3;
المتغير $objects هو مصفوفة تضع فيها كل الاشكال
المتغير $offset هو مصفوفه فيها عدد الصور لكل شكل
مثلاً لو عندي 5 صور مرقمة على شكل cat-1 cat-2 cat-3 cat-4 cat-4 اضع min واحد و max خمسة
المتغير $num_solutions تضع فيه عدد الاشكال التي تريد ان يتعرف عليها الزائر
المتغير $num_options هو عدد الخيارات لكل شكل
ثانياً.. نبدأ الجلسة و نفتح مصوفتين فارغات
رمز PHP:
// Do not mess with these
session_start();
$captchas = array();
$_SESSION['captcha_solutions'] = array();
ثالثاً.. نختار الاشكال للتعرف عليها من مصفوفة الاشكال على العدد الذي اختاره مستخدم السكريبت
<div style="margin:20px; margin-top:5px"> رمز PHP:
<div class="alt2"> <div dir="ltr" style="text-align:left;"> <span style="color: #000000">
// Shuffle the array and pick $num_solutions objects
shuffle($objects);
for($i = 0; $i <span style="color: #007700"><span style="color: #000000">
// Display the pictures of the captcha
foreach($captchas as $captcha) {
// Build a temp array of objects
$temp = $objects;
$key = array_search($captcha, $objects);
unset($temp[$key]);
shuffle($temp);
// Build a list of options
$options = array();
for($i = 0; $i <span style="color: #007700"><span style="color: #000000">
session_start();
$answers_user = $_POST['captcha'];
$answers_correct = $_SESSION['captcha_solutions'];
$num_correct = count($answers_correct);
$correct = 0;
for($i = 0; $i <span style="color: #007700">