|
إنضمامك إلي منتديات استراحات زايد يحقق لك معرفة كل ماهو جديد في عالم الانترنت ...
انضم الينا
#1
| ||
| ||
السلآم عليكم ..!
__DEFINE_LIKE_SHARE__
اليوم قلت أشرح لكم درس مهم من دروس الحماية وهو نظام الـ captcha أو المعروف بالتحقق البشري ! ^ عبارة عن نظام يكون رقم عشوائي على صورة ويتحقق من إدخال ما بداخل الصورة من أحرف وأرقام ~ الشرح رآح يكون عالسريع :nosweat: أولآ لنقوم بعمل فورم لإدخال البيانات "index.php" : رمز PHP: Captcha كما تشاهدون في الملف أكواد جافا + كود إستدعاء لملف أجاكس :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 |
مواقع النشر (المفضلة) |
| |
المواضيع المتشابهه | ||||
الموضوع | كاتب الموضوع | المنتدى | مشاركات | آخر مشاركة |
بلاك بيري تورش 9860 فل تتش مع بن ممير """""""""""""""""""""" | محروم.كوم | منتدى أخبار المواقع والمنتديات العربية والأجنبية | 0 | 10-28-2011 11:00 AM |
"مايكروسوفت" تكشف تفاصيل نظام التشغيل الجديد "Windows 8" | محروم.كوم | منتدى أخبار المواقع والمنتديات العربية والأجنبية | 0 | 09-16-2011 02:30 AM |
[iPhone] "آبل" تعين "هاكر" مختص باختراق نظام iOS | محروم.كوم | منتدى أخبار المواقع والمنتديات العربية والأجنبية | 0 | 08-29-2011 03:20 AM |
"""""""""""""""""""""""""""فساتين زفاف راقية ومميزة """"""""""&am | محروم.كوم | منتدى أخبار المواقع والمنتديات العربية والأجنبية | 0 | 07-13-2010 12:00 AM |
"دو" تطلق نظام "تعرفة واحدة تجمع العالم" الجديد لتعرفات التجوال الدولي | محروم.كوم | منتدى أخبار المواقع والمنتديات العربية والأجنبية | 0 | 06-10-2009 02:00 AM |