طريقة اضافة كود التحقق بالصورة CAPTCHA

مشاهدات الان
سلام عليكم ورحمة الله وبركاته
درس اليوم هو عن أداة تعتبر من أهم وأقوى الادوات في اي سكريبت يعتمد على تدخل الزوار سواء باضافة مشاركات أو تعليقات أو حتى بالبحث، وهي أداة CAPTCHA CODE أو التحقق البصري بالصورة.
وظيفتها هي التأكد أن من يقوم بملأ النموذج الخاص باضافة البيانات أو البحث هو بشر وليس سكريبت أو برنامج، مما يحفاظ على أمان السيرفر وعدم تكرار العملية بصورة كبيرة.
مثال عملي: انشاء كود اضافة تعليقات الزوار على المقال مع خاصية CAPTCHA
=====================================
أولاً: ملف نموذج اضافة التعليق comment.php
=====================================
<form name="add.php" method="post">
الاسم: <input type="text" name="name" /><br />
 التعليق: <textarea name="text" cols="30" rows="3"></textarea><br />
 من فضلك أدخل الكود التالي: <img src="captcha.php"> <input type="text" name="captchacode" /><br />
<input type="submit" name="submit" value="اضافة تعليق" />
</form>
=====================================
الكود طبعا هو نموذج بطريقة POST مفهوم وواضح ،، أحببت أن أنوه الى هذه الجزئية فيه:
=====================================
<img src="captcha.php">
=====================================
وهو الكود الخاص باظهار الصورة العشوائية، وجعلنا مصدر الصورة SRC هو اسم الملف الذي يقوم بتوليدها بحيث تنشأ عشوائيا في كل مرة يظهر فيها النموذج.
=====================================
ثانياً: ملف انشاء صورة التحقق captcha.php
=====================================
<?
session_start();
$text = rand(10000,99999);
$_SESSION["captchacode"] = $text;
$height = 25;
$width = 65;
$image_p = imagecreate($width, $height);
$black = imagecolorallocate($image_p, 0, 0, 0);
$white = imagecolorallocate($image_p, 255, 255, 255);
$font_size = 14;
imagestring($image_p, $font_size, 5, 5, $text, $white);
imagejpeg($image_p, null, 80);
?>
=====================================
في السطر الأول بدأنا السيشن، وتكمن أهمية السيشن في أننا سنقوم بحفظ الرقم الموجود في صورة التحقق فيها لمقارنته مع ما سيدخله المستخدم في النموذج..
في السطر الثاني، قمنا بانشاء الرقم الذي سيتم كتابته في الصورة وهو رقم عشوائي بين 10000 الى 99999
في السطر الثالث وضعنا هذا الرقم العشوائي في السيشن، ليتم مقارنته مع ما سيدخله المستخدم في الخطوة التالية
في السطر الرابع حددنا ارتفاع الصورة
في السطر الخامس ع حددنا عرض الصورة
في السطر السادس أصدرنا أمر انشاء الصورة باستخدام العرض والارتفاع المحددين في السطر الثالث والرابع
في السطر السابع قمنا بتحديد اللون الأسود للصورة
في السطر الثامن قمنا بتحديد اللون الأبيض للصورة
في السطر التاسع قمنا بتحديد حجم الخط المستخدم
في السطر العاشر والحادي عشر الانشاء الفعلي للصورة وطباعتها للمتصفح
=====================================
ثالثاً: ملف add.php (الاضافة الفعلية بقاعدة البيانات)
=====================================
<?
session_start();
if($_POST['captchacode'] != $_SESSION['captchacode'] OR $_SESSION["captchacode"]=='') 
{
    die("خطأ في كود التحقق، من فضلك أعد المحاولة مرة أخرى");
}
$name = htmlspecialchars($_POST['name']);
$text = htmlspecialchars($_POST['text']);
mysql_query("INSERT INTO `comments` VALUES ('', '$name', '$text')");
echo "تم اضافة تعليقك بنجاح، شكرا لك..";
?>
=====================================
في السطر الأول يتم متابعة السيشن السابقة
في السطر الثاني يتم التحقق ما اذا كانت النص الذي ادخله المستخدم غير مطابق للنص الموجود في السيشن (الموجود في الخطوة الثانية) فيتم طباعة رسالة خطأ تفيد خطأ في ادخال الكود..
أما في السطور التالية فهي عملية ادخال عادية الى قاعدة البيانات
=====================================
رابعا: الجدول comments
=====================================
CREATE TABLE `comments` (
`id` int(10) unsigned NOT NULL auto_increment,
`name` varchar(255) NOT NULL default '',
`comment` text NOT NULL,
PRIMARY KEY (`id`)
);
=====================================
بهذا يكون قد اكتمل المثال كاملاً...
ويمكنك استدعاء الملف comments.php عن طريق المتصفح ليظهر لك نموذج اضافة التعليق وتبدأ بالتجربة
ارجو التطبيق واخباري بتجاربكم
كذلك بتطويراتحكم للأفضل واقتراحاتكم أو استفساراتكم
الدرس خاص بالاخ coder
http://www.montadaphp.net/showthread.php?t=966
الدرس كامل بالمرفقات


إرسال تعليق

أحدث أقدم