• php
  • 4965
  • 20-3-2008
  • السلام عليكم ورحمة الله وبركاته درس اليوم هو عن أداة تعتبر من أهم وأقوى الادوات في اي سكريبت يعتمد على تدخل الزوار سواء باضافة مشاركات أو تعليقات أو حتى بالبحث، وهي أداة 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 عن طريق المتصفح ليظهر لك نموذج اضافة التعليق وتبدأ بالتجربة ارجو التطبيق واخباري بتجاربكم
    كذلك بتطويراتحكم للأفضل واقتراحاتكم أو استفساراتكم [color=FA0309]الدرس كامل بالمرفقات[/color] الدرس خاص بالاخ coder
    http://www.montadaphp.net/showthread.php?t=966
    كن أول من يقيم الموضوع
    12345