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

الملاحظات


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

Arabic Rss


 
 
أدوات الموضوع انواع عرض الموضوع
  #1  
قديم 01-10-2012
الصورة الرمزية RSS
RSS غير متواجد حالياً
ناقل الأخبار
 
تاريخ التسجيل: 11 - 2 - 10
المشاركات: 681,012
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
المجاوشي للتقنية المتقدمة