باسم الله الرحمان الرحيم
وَلَوْ أَرَادُواْ الْخُرُوجَ لأَعَدُّواْ لَهُ عُدَّةً وَلَكِن كَرِهَ اللَّهُ انبِعَاثَهُمْ فَثَبَّطَهُمْ وَقِيلَ اقْعُدُواْ مَعَ الْقَاعِدِينَ
سورة التوبة الآية 46
السلام عليكم و رحمة الله و بركاته
قصد حماية الموقع من الأوامر المزعجة و الــ spam تلجأ الكثير من المواقع إلى نظام captcha أو ما يطلق عليه باللغة العربية : رمز التحقق
ودلك للتأكد من أن المستخدم الذي ادخل البيانات إنسان و ليس برنامج
لاحظ التالي
1
نموذج تسجيل عضوية جديدة في Hotmail يفرض هده العملية
2
نموذج التسجيل في سكربت LayeredPanel كذلك
3
في مجلة يستطيع المشرف العام منع الزائر من تسجيل الدخول إلا بعد كتابة كود التحقق
سأحاول شرح إنجاز هده العملية الهامة على الموقع حسب خبرتي المتواضعة
ودلك بالاستناد إلى مثال بسط جدا لا يسمح لك بمشاهدة محتوى صفحة معينة إلا بعد إدخال رمز التحقق
فعلى بركة الله نبدأ
1 انشاء صورة الكود
أنشء ملفا جديدا و ابدأ البرمجة بفتح الجلسة و تخزين رقم عشوائي في متغير
كود PHP:
<?php
session_start();
قم بتخزين قيمة المتغير $azizsoft_ca في جلسة و لتكن على سبيل المثال
كود PHP:
$_SESSION['azizsoft_ca'] = $azizsoft_ca;
نحتاج لبرمجة صورة التحقق التي سيظهر داخلها الكود
1 تحديد اسم و نوع الملف عن طريق دالة header
كود PHP:
header('Content-Disposition: filename="azizsoft.jpg"');
كود PHP:
header('(anti-spam-content-type:) image/jpeg');
2 إنشاء إطار الصورة استنادا إلى متغيري الطول و الارتفاع
كود PHP:
$height = 25;
$width = 62;
$image_p = imagecreate($width, $height);
3 تحديد لون الكتابة و لون الخلفية
كود PHP:
$black = imagecolorallocate($image_p, 0, 0, 0);
$white = imagecolorallocate($image_p, 255, 255, 255);
4 تحديد حجم الخط
كود PHP:
$font_size = 28;
5 إنشاء الصورة و كتابة الرقم العشوائي داخلها
كود PHP:
imagestring($image_p, $font_size, 5, 5, $azizsoft_ca, $white);
6 تحديد الجودة
سنحصل على نتيجة مثلكود PHP:
imagejpeg($image_p, null, 20);
الكود كاملا
كود PHP:
<?php
session_start();
$azizsoft_ca = rand(100000, 999999);
$_SESSION['azizsoft_ca'] = $azizsoft_ca;
header('Content-Disposition: filename="azizsoft.jpg"');
header('(anti-spam-content-type:) image/jpeg');
$height = 25;
$width = 62;
$image_p = imagecreate($width, $height);
$black = imagecolorallocate($image_p, 0, 0, 0);
$white = imagecolorallocate($image_p, 255, 255, 255);
$font_size = 28;
imagestring($image_p, $font_size, 5, 5, $azizsoft_ca, $white);
imagejpeg($image_p, null, 20);
?>
2 تصميم النموذج
الآن لننتقل إلى برنامج front page لتصميم نموذج إدخال كود التحقق
لا أضن أنني في حاجة لشرح خطوات تصميم نموذج بهده البساطة فكل شخص لديه طريقته الخاصة في العمل على front page أو أي برنامج بديل
النموذج سيكون افتراضيا بهذا الشكل
كما تلاحظون فالنموذج مجرد مثال مبسط :
3 تصميم صفحة الاستقبال
- حقل الإدخال
- صورة الكود
- رز الإدخال
أولا لابد من فتح الجلسة
كود PHP:
<?
كود PHP:
session_start();
إنشاء الشرط الذي يتمحور حوله الموضوع
هل توجد جلسة؟
هل القيمة القادمة من النموذج لا تطابق قيمة متغير الجلسة $azizsoft_ca
و النص البرمجي للشرط سيكون افتراضيا بهدا الشكل
كود PHP:
if(!$_SESSION['azizsoft_ca'] || $_SESSION['azizsoft_ca'] != $_POST['azizsoft_ca'])
هدا باعتبار أن azizsoft_ca هو اسم حقل إدخال الكود
ادا كانت الشروط الموجودة داخل الدالة الشرطية غير متوفرة فالنتيجة هي
كود PHP:
{
die("عفوا ! <br> كود التحقق الدي أدخلته غير صحيح");
}
بهدا سيتوقف الزائر عند هده العبارة
يمكن جلب صفحة النموذج داخل الشرط عن طريق دالة include و دلك حتى يتمكن الزائر من مشاهدة النموذج دون الحاجة للعودة للصفحة السابقة
كود PHP:
{
echo "عفوا ! <br> كود التحقق الدي أدخلته غير صحيح";
include("ca.html");
die();
}
هدا باعتبار أن ca.html هو اسم صفحة النمودج
أسفل هده المنطقة يمكنك برمجة ما تريد أن يشاهده الزائر عند ادخال الكود بشكل صحيح
المتال كاملا
كود PHP:
<?
session_start();
if(!$_SESSION['azizsoft_ca'] || $_SESSION['azizsoft_ca'] != $_POST['azizsoft_ca'])
{
die("ere");
}
echo "ok<br>";
?>
المتال الكامل للدرس مرفق مع الموضوع
التحية للجميع
azizsoft