اشهار المنتديات
هل تريد التفاعل مع هذه المساهمة؟ كل ما عليك هو إنشاء حساب جديد ببضع خطوات أو تسجيل الدخول للمتابعة.


اشهار مواقع,اشهار منتديات,منتديات اشهار المنتيات,تقنيات الاشهار,اشهار مجانى,منتدى الاشهار العربى,منتدى الاشهار المجانى,اشهر موقعك,اشهر منتداك.اشهر مدونتك,اشهر صفحتك,اشهار مواقع,اشهار منتديات,اشهار صفحات,اشهار مدونات,اشهارجروبات,add url,add site,add grou
 
الرئيسيةالرئيسية  البوابةالبوابة  أحدث الصورأحدث الصور  التسجيلالتسجيل  دخولدخول  

 

 طريقة عمل الكابتشا بأسهل الطرق

اذهب الى الأسفل 
كاتب الموضوعرسالة
AL Master
الــمــديــر الــعــامــ
الــمــديــر الــعــامــ
AL Master


المساهمات : 646
تاريخ التسجيل : 10/11/2010

طريقة عمل الكابتشا بأسهل الطرق Empty
مُساهمةموضوع: طريقة عمل الكابتشا بأسهل الطرق   طريقة عمل الكابتشا بأسهل الطرق Icon_minitimeالجمعة نوفمبر 12, 2010 1:12 pm

بسم الله الرحمن الرحيم

السلام عليكم ورحمة وبركاته

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

اولا نرتب أفكارنا
هنا اكثر من طريقة لعمل الكابتشا
ولكن ماهي الكابتشا

الكابتشا هي عبارة عن سؤال وإجابة

ويمكن عمل ذلك بأكثر من طريقه
سواء بعمل صورة
او عمل سؤال واجابة

ويمكن عمل ذلك بأكثر من طريقة
اما بقاعدة البيانات مثلا او عن طريق السيزون

وبما اننا نحاول قدر الامكان تخفيف الاستعلامات عن قاعدة البيانات فسأقوم بشرح طريقة عمل الكابتشا عن طريق السيزون

اذن خطوات العمل
1 - إنشاء كود عشوائي
2 - وضع هذا الكود في صورة
3 - إنشاء سيزون بهذا الكود
4 - عرض الكود
5 التحقق من الكود

اذن لنقوم بعمل كلاس بسيط جدا يقوم بهذه المهمه

على الطريقه التالية
رمز PHP:
class Captcha {
// الأكواد هنا
}


ثانيا نقوم بعمل مفردات الكلاس التي سنحتاجها وهي
1- الكود
2 - طول الصورة
3 - عرض الصورة

ليصبح الكلاس كالتالي
رمز PHP:
class Captcha {

protected
$code; // كود التحقق الذي سيظهر في الصورة ويحمله السيزون
protected $width = 35; // ؟؟ عرض الصورة
protected $height = 150; // إرتفاع الصورة

}


ثالثا نقوم بعمل الكنسرتكتور للكلاس وهو دالة إنشاء الكلاس التي تقوم بتنفيذ بعض المهام عند استدعاء الكلاس
وفي هذه الحالة ستقوم هذه الدالة بعمل شيء واحد فقط
وهو انشاء الكود العشوائي الذي سيتم تعيينه الى صورة التحقق
وهناك اكثر من طريقه لعمل كود عشوائي
هذه هي إحداها
رمز PHP:
function __construct() {
$this->code = substr(sha1(mt_rand()), 17, 6);
}


وبالتالي يصبح الكلاس كالتالي
رمز PHP:
class Captcha {

protected
$code; // كود التحقق الذي سيظهر في الصورة ويحمله السيزون
protected $width = 35; // ؟؟ عرض الصورة
protected $height = 150; // إرتفاع الصورة

function __construct() {
$this->code = substr(sha1(mt_rand()), 17, 6);
}

}


اذن انتهينا من الاعدادات وكود التحقق
نحتاج الى دالة بداخل الكلاس تعود لنا بالكود الذي تم انشاؤه من قبل الكونستركتور
يعني دالة ترجع بالكود الذي تم إنشاؤه

وهي سهله جدا بما ان الكود هو أحد متغيرات الكلاس فكل ما نحتاجه انها تعود به فقط
وهي ما سيتم إستخدامها خارج الكلاس لجلب الكود لعملية التحقق
والدالة كالتالي

رمز PHP:
function getCode(){
return
$this->code;
}


وهي ايضا يمكن دمجاه مع الكنستركتور لانها تعود بقيمة الكنتسركتور
لكن كنوع من النظام فاننا نقوم بعملها في دالة لحالها
اذ ربا تحتاج الى اداء بعض العمليات في المستقبل على الكود
فيفضل فصله في دالة لوحده
اذن اصبح الكلاس كالتالي
رمز PHP:
class Captcha {

protected
$code; // كود التحقق الذي سيظهر في الصورة ويحمله السيزون
protected $width = 35; // ؟؟ عرض الصورة
protected $height = 150; // إرتفاع الصورة

function __construct() {
$this->code = substr(sha1(mt_rand()), 17, 6);
}

function
getCode(){
return
$this->code;
}
}


أخيرا بقى دالة واحده فقط وهي دالة التي تقوم بإنشاء الصورة ودمج الكود فيها
وهي تحتاج بعض النظام ولنمشي على الخطوات التالية :1
اولا إنشاء صورة بالطول والعرض المحدد في الكلاس
رمز PHP:
$image = imagecreatetruecolor($this->height, $this->width);


ثانيا جلب بعض المتغيرات عن هذه الصورة التي تم إنشاؤها مثل الطول والعرض الحقيقي لها
والهدف من هذا هو عمل بعض الإضافات العشوائية على الصورة بحيث لا تصبح الخلفية بيضاء كنوع من أنواع التصعيب
وهي كالتالي
رمز PHP:
$width = imagesx($image);
$height = imagesy($image);


ثالثا عمل بعض أكواد الالوان العشوائية إستنادا الى الصورة التي تم إنشاؤها
كود إنشاء البقعه السوداء
رمز PHP:
$black = imagecolorallocate($image, 0, 0, 0);


كود إنشاء بقعه بيضاء
رمز PHP:
$white = imagecolorallocate($image, 255, 255, 255);


كود إنشاء بقعه حمراء (( نلاحظ هنا اننا استخدمنا الدالة
imagecolorallocatealpha وهي تحتاج الى مكتبة GD 2 أو أعلى
رمز PHP:
$red = imagecolorallocatealpha($image, 255, 0, 0, 75);


كود إنشاء بقعه خضراء
رمز PHP:
$green = imagecolorallocatealpha($image, 0, 255, 0, 75);


كود إنشاء بقعه زرقاء
رمز PHP:
$blue = imagecolorallocatealpha($image, 0, 0, 255, 75);


ولمزيد عن الدوال السابقه من الرابط التالي
http://www.php.net/manual/en/functio...ocatealpha.php
http://www.php.net/manual/en/functio...orallocate.php

وما نلاحظه في الدوال السابقه اننا نعطيها أكود الالوان التي تريد ويمكنك إنشاء المزيد من الالوان على حسب البارميترات التي تعطيها للدالة
ومن ثم نقوم بعمل صورة مربعه بيضاء خالية تماما بالمقاسات السابقه عن طريق الدالة imagefilledrectangle وطبعا نعطيها كود اللون الابيض الذي قمنا بانشاؤه سابقا
كالتالي
رمز PHP:
imagefilledrectangle($image, 0, 0, $width, $height, $white);


ومن ثم نقوم بدمج بقع الالوان العشوائية الى الصورة السابقه ولن نحدد مكان ثابت للبقع بل مكان عشوائي كل مرة عن السابقه وهو عن طريق تغيير الاحداثيات كالتالي

رمز PHP:
imagefilledellipse($image, ceil(rand(5, 145)), ceil(rand(0, 35)), 30, 30, $red);
imagefilledellipse($image, ceil(rand(5, 145)), ceil(rand(0, 35)), 30, 30, $green);
imagefilledellipse($image, ceil(rand(5, 145)), ceil(rand(0, 35)), 30, 30, $blue);


ثم نقوم بعمل إطار لهذه الصورة وليكن لونه أسود وفي هذه العملية يتم التعامل مع كل ضلع من أضلاع الصورة لوحده ليتم رسم الإطار إليه كالتالي
رمز PHP:
imagefilledrectangle($image, 0, 0, $width, 0, $black);
imagefilledrectangle($image, $width - 1, 0, $width - 1, $height - 1, $black);
imagefilledrectangle($image, 0, 0, 0, $height - 1, $black);
imagefilledrectangle($image, 0, $height - 1, $width, $height - 1, $black);


وطبعا يمكن تجاوز الخطوة السابقه لالغاء عمل اطار الصورة او تغيير لونه (( براحتك يعني ))

الى هنا الكود السابق يقوم بإنشاء صورة كهذه
طريقة عمل الكابتشا بأسهل الطرق IaS76497

ما بقى هو ادارج الكود العشوائي الى الصورة وسنستخدم هنا الدالة imagestring كالتالي

رمز PHP:
imagestring($image, 10, intval(($width - (strlen($this->code) * 9)) / 2), intval(($height - 15) / 2), $this->code, $black);


وقمنا يتحديد الخيارات ان حجم الخط 10 ثم إحداثيات الكود من أسفل وأعلى لكي يظهر بالضبط في المنتصف ومن ثم الكود ومن ثم لون الكود

وبالتالي تعيين الهيدر الى نوعيه الصورة ومن ثم عرض الصورة ثم تدمير الصور من المتصفح كالتالي

رمز PHP:
header('Content-type: image/jpeg');
imagejpeg($image);
imagedestroy($image);


وبهذا تكون الدالة إنتهت وكذلك الكلاس
وتكون الدالة في داخل الكلاس كالتالي
رمز PHP:
class Captcha {
protected
$code;
protected
$width = 35;
protected
$height = 150;

function
__construct() {
$this->code = substr(sha1(mt_rand()), 17, 6);
}

function
getCode(){
return
$this->code;
}

function
showImage() {
$image = imagecreatetruecolor($this->height, $this->width);

$width = imagesx($image);
$height = imagesy($image);

$black = imagecolorallocate($image, 0, 0, 0);
$white = imagecolorallocate($image, 255, 255, 255);
$red = imagecolorallocatealpha($image, 255, 0, 0, 75);
$green = imagecolorallocatealpha($image, 0, 255, 0, 75);
$blue = imagecolorallocatealpha($image, 0, 0, 255, 75);

imagefilledrectangle($image, 0, 0, $width, $height, $white);

imagefilledellipse($image, ceil(rand(5, 145)), ceil(rand(0, 35)), 30, 30, $red);
imagefilledellipse($image, ceil(rand(5, 145)), ceil(rand(0, 35)), 30, 30, $green);
imagefilledellipse($image, ceil(rand(5, 145)), ceil(rand(0, 35)), 30, 30, $blue);

imagefilledrectangle($image, 0, 0, $width, 0, $black);
imagefilledrectangle($image, $width - 1, 0, $width - 1, $height - 1, $black);
imagefilledrectangle($image, 0, 0, 0, $height - 1, $black);
imagefilledrectangle($image, 0, $height - 1, $width, $height - 1, $black);

imagestring($image, 10, intval(($width - (strlen($this->code) * 9)) / 2), intval(($height - 15) / 2), $this->code, $black);

header('Content-type: image/jpeg');
imagejpeg($image);
imagedestroy($image);
}
}


وتكون طريقة إستخدام الكلاس كالتالي
رمز PHP:
$m = new Captcha();
$string = $m->getCode();
$_SESSION['key'] = md5($string);
print
$m->showImage();


ولاستخدام الكلاس سيكون إدراجه على هيئة صورة في صفحات الفورم كالتالي
طبعا بعد إستدعاؤه بالطريقه السابقة الذكر في صفحه على المثال السابق اسمها captcha.php
ولابد من إنشاء السيزون ايضا في نفس هذه الصفحه
رمز PHP:
<img src="captcha.php" alt="" border="0" />


وستكون الصورة التي تنتج من الكلاس كالشكل التالي
طريقة عمل الكابتشا بأسهل الطرق S1876943



واخيرا هذا هو كود الكلاس كاملا
رمز PHP:
session_start();

class
Captcha {
protected
$code;
protected
$width = 35;
protected
$height = 150;

function
__construct() {
$this->code = substr(sha1(mt_rand()), 17, 6);
}

function
getCode(){
return
$this->code;
}

function
showImage() {
$image = imagecreatetruecolor($this->height, $this->width);

$width = imagesx($image);
$height = imagesy($image);

$black = imagecolorallocate($image, 0, 0, 0);
$white = imagecolorallocate($image, 255, 255, 255);
$red = imagecolorallocatealpha($image, 255, 0, 0, 75);
$green = imagecolorallocatealpha($image, 0, 255, 0, 75);
$blue = imagecolorallocatealpha($image, 0, 0, 255, 75);

imagefilledrectangle($image, 0, 0, $width, $height, $white);

imagefilledellipse($image, ceil(rand(5, 145)), ceil(rand(0, 35)), 30, 30, $red);
imagefilledellipse($image, ceil(rand(5, 145)), ceil(rand(0, 35)), 30, 30, $green);
imagefilledellipse($image, ceil(rand(5, 145)), ceil(rand(0, 35)), 30, 30, $blue);

imagefilledrectangle($image, 0, 0, $width, 0, $black);
imagefilledrectangle($image, $width - 1, 0, $width - 1, $height - 1, $black);
imagefilledrectangle($image, 0, 0, 0, $height - 1, $black);
imagefilledrectangle($image, 0, $height - 1, $width, $height - 1, $black);

imagestring($image, 10, intval(($width - (strlen($this->code) * 9)) / 2), intval(($height - 15) / 2), $this->code, $black);

header('Content-type: image/jpeg');

imagejpeg($image);

imagedestroy($image);
}
}
// الإستخدام
$m = new Captcha();
$string = $m->getCode();
$_SESSION['key'] = md5($string);
print
$m->showImage();


ارجو الإستفاده ولأي سؤال إن شاء الله متواجد معكم
الرجوع الى أعلى الصفحة اذهب الى الأسفل
https://esh7ar.own0.com
 
طريقة عمل الكابتشا بأسهل الطرق
الرجوع الى أعلى الصفحة 
صفحة 1 من اصل 1
 مواضيع مماثلة
-
» رفع البيج رانك طريقة مضمونة
» تومبلايت طريقة وضع قوانين التسجيل كالفي بي
» طريقة إضافة منتداك فيـــــــgoogleعن طريق meta tag
» طريقة جديدة لكسب زوار وكسب باك لينكس
» تومبيلات طريقة منع الزر الايمن في المواضيع فقط (لمنع النسخ)

صلاحيات هذا المنتدى:لاتستطيع الرد على المواضيع في هذا المنتدى
اشهار المنتديات :: منتديات دعم المواقع وتطويرها :: منتدى لغات البرمجه php و asp و Ajax و Java-
انتقل الى: