المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : درس عملي طريقة اضافة كود التحقق بالصورة Captcha



Bakenam
03-17-2009, 03:01 AM
السلام عليكم

درس اليوم هو عن أداة تعتبر من أهم وأقوى الادوات في اي سكريبت يعتمد على تدخل الزوار سواء باضافة مشاركات أو تعليقات أو حتى بالبحث، وهي أداة CAPTCHA CODE أو التحقق البصري بالصورة.



وظيفتها هي التأكد أن من يقوم بملأ النموذج الخاص باضافة البيانات أو البحث هو بشر وليس سكريبت أو برنامج، مما يحفاظ على أمان السيرفر وعدم تكرار العملية بصورة كبيرة.

مثال عملي: انشاء كود اضافة تعليقات الزوار على المقال مع خاصية CAPTCHA
أولاً: ملف نموذج اضافة التعليق comment.php

<form name="add.php" method="post">
الاسم: <input type="****" name="name" /><br />
التعليق: <****area name="****" cols="30" rows="3"><



الكود طبعا هو نموذج بطريقة POST مفهوم وواضح ،، أحببت أن أنوه الى هذه الجزئية فيه:


<img src="captcha.php">


وهو الكود الخاص باظهار الصورة العشوائية، وجعلنا مصدر الصورة SRC هو اسم الملف الذي يقوم بتوليدها بحيث تنشأ عشوائيا في كل مرة يظهر فيها النموذج.

ثانياً: ملف انشاء صورة التحقق captcha.php


<?
session_start();
$**** = rand(10000,99999);
$_SESSION["captchacode"] = $****;
$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, $****, $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']);
$**** = htmlspecialchars($_POST['****']);
mysql_query("INSERT INTO `comments` VALUES ('', '$name', '$****')");
echo "تم اضافة تعليقك بنجاح، شكرا لك..";
?>



في السطر الأول يتم متابعة السيشن السابقة
في السطر الثاني يتم التحقق ما اذا كانت النص الذي ادخله المستخدم غير مطابق للنص الموجود في السيشن (الموجود في الخطوة الثانية) فيتم طباعة رسالة خطأ تفيد خطأ في ادخال الكود..
أما في السطور التالية فهي عملية ادخال عادية الى قاعدة البيانات

رابعا: الجدول comments



CREATE TABLE `comments` (
`id` int(10) unsigned NOT NULL auto_increment,
`name` varchar(255) NOT NULL default '',
`comment` **** NOT NULL,
PRIMARY KEY (`id`)
);




بهذا يكون قد اكتمل المثال كاملاً...
ويمكنك استدعاء الملف comments.php عن طريق المتصفح ليظهر لك نموذج اضافة التعليق وتبدأ بالتجربة

ارجو التطبيق واخباري بتجاربكم ..


لا اسمح بنقل الموضوع الا بالمصدر