العودة   منتديات المجاوشي > منتديات مجاوشي للترفيه والتسلية > :: RSS :: > Arabic Rss
Arabic Rss Arabic Rss تنويه : المعهد غير مسؤول عن ما يحويه هذا القسم .... وجب لاتنويه والتحذير

الملاحظات


[ درس ] برمجة نظام captcha "التحقق البشري!"

Arabic Rss


 
  #1  
قديم 01-10-2012
الصورة الرمزية RSS
RSS غير متواجد حالياً
ناقل الأخبار
 
تاريخ التسجيل: 11 - 2 - 10
المشاركات: 681,875
RSS is on a distinguished road
افتراضي [ درس ] برمجة نظام captcha "التحقق البشري!"

السلآم عليكم ..!

اليوم قلت أشرح لكم درس مهم من دروس الحماية وهو نظام الـ captcha أو المعروف بالتحقق البشري !

^ عبارة عن نظام يكون رقم عشوائي على صورة ويتحقق من إدخال ما بداخل الصورة من أحرف وأرقام ~

الشرح رآح يكون عالسريع :nosweat:

أولآ لنقوم بعمل فورم لإدخال البيانات "index.php" :

رمز PHP:






Captcha









&
nbsp;






&
nbsp;



كما تشاهدون في الملف أكواد جافا + كود إستدعاء لملف أجاكس :bigsmile:

^ إن وجدت مسافات قم بحذفها :cupidarrow:

الآن العمل الجدي ومهو ملف "create_image.php" والذي يقوم بتوليد الصورة الخاصة بالتحقق :

رمز PHP:


أولآ الملف بدأناه بـ جلسة جديدة لكي يكون التحقق بالكوكيز أي الجلسات :bigsmile:

وقمت بعمل دالة تقوم بعمل رمز عشوائي ومكون من حروف وأرقام + لم أضف حرف الـ "o" لكي لآ يكون هناك أغلاط أو تشابه مع رقم الـ "0" الصفر !

هناك أيضا الطريقة التقليدية وهي تكوين الرمز بإستعمال تشفير الـ "MD5" ولكي تقوم باستمالها فقط أزل "//" قبلها كالتالي :

رمز PHP:
$md5_hash = md5(rand(0,999));


وأيضا يجب إزالة "//" من امام المتغير "security_code" لصبح كالتاالي :
رمز PHP:

// $security_code = substr($md5_hash, 15, 8);
$security_code = substr($activatecode, 15, 8);


وفي البداية قلت رآح نتحقق عبر نظام الجلسات وهنا كود يوضح كلآمي :

رمز PHP:
$_SESSION["security_code"] = $security_code;


في الكود السابق جعلنا الرمز العشوائي في الجلسة المسماه بإسم "security_code"

وأيضا هناك كود عمل الصورة !

وأيضا بنها كود قمت بحجبه وهو كود لعمل خطوط على الأحرف ليكون التأكد أقوى ولآ أرى أن له لزمة ولتفعيها هذا نقوم بإزالة "//" من كل سطر كالتالي :

رمز PHP:
ImageRectangle($image,0,0,$widt h-1,$height-1,$grey);
imageline($image, 0, $height/2, $widt h, $height/2, $grey);
imageline($image, $widt h/2, 0, $widt h/2, $height, $grey);


الآن النظام كآمل والكمآل لله وحده !

نأتي لطريقة التأكد في الصفحات المراد حمايتها ولتكن باسم "captcha" :

رمز PHP:



كما هو وآضح قمنا بعمل جلسة جديدة !

وتحققنا إن كان طلب الصفحة كان عبر "POST" وليس "GET" بهذا الكود :

رمز PHP:
if ($_SERVER["REQUEST_METHOD"] "POST")
die(
"You can only reach this page by posting from the html form");


الآن نقوم بالتحقق إن كان تم إدخال الرموز في الحقل المخصص وهذا المدخل يساوي الجلسة المخصصة التي قمنا بها !
وأيضا إن كان الحقلآن غير فارغان وأقصد بهما حقل الجلسة وحقل الرمز للتحقق !!

وهذا هو الكود :

رمز PHP:
if ( ($_REQUEST["txtCaptcha"] == $_SESSION["security_code"]) &&
(!empty(
$_REQUEST["txtCaptcha"]) && !empty($_SESSION["security_code"])) )



الآن قمنا بعمل كود التحقق وإن تم تحقق الشرط إطبع التالي :

رمز PHP:
Test successful!


وإن لم تتحقق الشروط إطبع التالي :

رمز PHP:
Test failed! Try again!


جميل الآن إنتهينا من كل شي تقريبا وبقي ملفات الجافا !

طبعا لن أقوم بشرحها ولآكن طريقة عملها تقوم بجلب صفحة التحقق والصورة بعد كل تحقق :nosweat:

الملف "ajax_captcha.js" :

رمز PHP:
//Gets the browser specific XmlHttpRequest Object
function getXmlHttpRequestObject() {
if (
windo w.XMLHttpRequest) {
return new
XMLHttpRequest(); //Mozilla, Safari ...
} else if (windo w.ActiveXObject) {
return new
ActiveXObject("Microsoft.XMLHTTP"); //IE
} else {
//Display our error message
ale rt("Your browser doesn't support the XmlHttpRequest object.");
}



}
//Our XmlHttpRequest object
var receiveReq = getXmlHttpRequestObject();
//Initiate the AJAX request
function makeRequest(url, param) {
//If our readystate is either not started or finished, initiate a new request
if (receiveReq.readyState == 4 || receiveReq.readyState == 0) {
//Set up the connection to captcha_test.html. True sets the request to asyncronous(default)
receiveReq.open("POST", url, true);
//Set the function that will be called when the XmlHttpRequest objects state changes
receiveReq.onreadystatechange = updatePage;

//Add HTTP headers to the request
receiveReq.setRequestHeader("Conten t-type", "application/x-www-form-urlencoded");
receiveReq.setRequestHeader("Conten t-length", param.length);
receiveReq.setRequestHeader("Connection", "close");

//Make the request
receiveReq.send(param);
}
}
//Called every time our XmlHttpRequest objects state changes
function updatePage() {
//Check if our response is ready
if (receiveReq.readyState == 4) {
//Set the conten t of the DIV element with the response text
documen t.getElementById('result').innerHTML = receiveReq.responseText;
//Get a reference to CAPTCHA image
img = documen t.getElementById('imgCaptcha');
//Change the image
img.src = 'create_image.php?' + Math.random();
}
}

//Called every time when form is perfomed
function getParam(theForm) {
//Set the URL
var url = 'captcha.php';
//Set up the parameters of our AJAX call
var postStr = theForm.txtCaptcha.nam e + "=" + encodeURIComponent( theForm.txtCaptcha.value );
//Call the function that initiate the AJAX request
makeRequest(url, postStr);
}


قم بحفظة في نفس المجلد !

الآن قم بإستعرآض الملف "index.php" وأخبرني برأيك في نظام التحقق :bigsmile:

مهم يوجد مسافات ببعض الكلمات والسبب يعود للفلترة في الموقع وقريبا سوف أقوم بإلغائها لنعطي المجآل للمبرمجين :d

الاكواد شبه منقولة .. أتمنى حفظ الحقوق عند النشر !


HaNniBaL KsA
www.r00t-s3c.com








أكثر...
 

مواقع النشر (المفضلة)

أدوات الموضوع
انواع عرض الموضوع

تعليمات المشاركة
لا تستطيع إضافة مواضيع جديدة
لا تستطيع الرد على المواضيع
لا تستطيع إرفاق ملفات
لا تستطيع تعديل مشاركاتك

BB code is متاحة
كود [IMG] متاحة
كود HTML معطلة

الانتقال السريع

المواضيع المتشابهه
الموضوع كاتب الموضوع المنتدى مشاركات آخر مشاركة
[البشرى قادمة] هيئة الاستشعار : مستعدون للتعاون مع "حجى" لتصنيع قمر صناعى مصرى 100% RSS Arabic Rss 0 10-29-2011 09:31 PM
"مايكروسوفت" تكشف تفاصيل نظام التشغيل الجديد "Windows 8" RSS Arabic Rss 0 09-16-2011 02:25 AM
مفارقة "الكرامة الإنسانية" و"الرفات البشري" في القدس RSS المجاوشي للأخبار العامه والسياسية والرياضية 0 06-06-2011 11:24 AM
يستكمل دراسة مشروع نظام السياحة .. "الشورى" يناقش تقريري "الرقابة" و"صندوق التنمية" RSS المجاوشي للأخبار العامه والسياسية والرياضية 0 05-31-2010 03:21 PM
وصفه بأنه "نكرة" و"ضعيف" و"متناقض" و"صاحب هوى" .. الدويش يشن أعنف هجوم على "الغامدي" ويقول "إنه باع دينه" RSS المجاوشي للأخبار العامه والسياسية والرياضية 0 04-20-2010 04:06 AM


Loading...


Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd. منتديات بلاك بيري mjawshy.net
المجاوشي للتقنية المتقدمة