المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : استخدام كود الحماية captcha



walid_8281500
03-23-2009, 04:46 AM
السلام عليكم ورحمة والله وبركاته

في اغلب برمجياتنا نحتاج لوضع كود حماية من الفلود او من التسجيل مثلا بأكثر من عضوية

فلهذا الشأن قد اتيت لكم بهذه الملفات البسيطة للتغلب على هذه المشاكل

اولا قم بفتح ملف جديد وقم بتسميته captcha.php

وضع به الكود التالي :



<?php
session_start();
$width = 140;//عرض الصورة
$height = 70; //طول الصورة
$im = imagecreate($width, $height);//بناء الصورة
$bg = imagecolorallocate($im, 0, 0, 0); //تحضير الالوان من نوع RGP

//بناء نص عشوائي
$len = 5;
$chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
$string = '';
for ($i = 0; $i < $len; $i++) {
$pos = rand(0, strlen($chars)-1);
$string .= $chars{$pos};
}
$_SESSION['captcha_code'] = md5($string);

// تلوين الصورة
$grid_color = imagecolorallocate($im, 175, 0, 0);
$number_to_loop = ceil($width / 20);
for($i = 0; $i < $number_to_loop; $i++) {
$x = ($i + 1) * 20;
imageline($im, $x, 0, $x, $height, $grid_color);
}
$number_to_loop = ceil($height / 10);
for($i = 0; $i < $number_to_loop; $i++) {
$y = ($i + 1) * 10;
imageline($im, 0, $y, $width, $y, $grid_color);
}

// انشاء خطوط عشوائية في الصورة
$line_color = imagecolorallocate($im, 130, 0, 0);
for($i = 0; $i < 30; $i++) {
$rand_x_1 = rand(0, $width - 1);
$rand_x_2 = rand(0, $width - 1);
$rand_y_1 = rand(0, $height - 1);
$rand_y_2 = rand(0, $height - 1);
imageline($im, $rand_x_1, $rand_y_1, $rand_x_2, $rand_y_2, $line_color);
}

// كتابة النص على الصورة المنشأه
$****_color = imagecolorallocate($im, 255, 0, 0);
$rand_x = rand(0, $width - 50);
$rand_y = rand(0, $height - 15);
imagestring($im, 10, $rand_x, $rand_y, $string, $****_color);

//ارسال الصورة من نوع png
header ("Content-type: image/png");
imagepng($im);
?>

وهذا ملف عرض الصورة وليكن مثلا index.php




<?php
session_start();
echo "<div dir='rtl'>";
if(isset($HTTP_POST_VARS['submit'])) {
if(isset($HTTP_POST_VARS['captcha_code']) && isset($_SESSION['captcha_code'])) {
if(md5($HTTP_POST_VARS['captcha_code']) == $_SESSION['captcha_code']) {
echo 'الرمز المدخل صحيح<br />';
}else{
echo 'الرمز المدخل غير صحيح<br />';
}
}else{
if(!isset($HTTP_POST_VARS['captcha_code'])) {
echo 'لم تقم بأدخال الرمز<br />';
}
if(!isset($_SESSION['captcha_code'])) {
echo 'لم يتم عرض الرمز<br />';
}
}
}
?>
</div>
<div dir="rtl">
<form method="POST">
<img src="captcha.php" />
<br />
قم بكتابة النص الذي تراه بالصورة<br />
<input type="****" name="captcha_code" />
<br />
<input type="submit" name="submit" value="Submit" />
</form>
</div>

للتجربة :

http://test.p-des.com/captcha/index.php