نظرة سريعة على مجريات يوم سوالف
الفائزون في المسابقة الأصغر لسوالف كاست

 

العودة   سوالف سوفت > قسم تطوير وبرمجة المواقع للمتقدمين > تطوير الويب
المدوّنات البحث مشاركات اليوم اجعل كافة المشاركات مقروءة

موضوع مغلق  
 
LinkBack أدوات الموضوع
عضو نشيط جدا
تاريخ التسجيل: Sep 2006-
#1 (permalink)  
استخدام الـ Captcha في الـ PHP


بسم الله الرحمن الرحيم ،،
السلام عليكم ورحمة الله وبركاته ,,
اللهم علمنا بمانفعتنا وانفعنا بماعلمتنا وزدنا علما ياقدير ..

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

ماهي ال Captcha ؟
لعلك حينما تبحث في جوجل سيظهر لك أول واحد هذا الرابط
http://en.wikipedia.org/wiki/Captcha ..
وفيه نبذه عنها وهي بشكل مختصر صوره يتم كتابتها ديناميكيا بواسطة أحد لغات السيرفر
الهدف منها تقليص المدخلات المزعجة والتي تهدف العبث بموقعك ..

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

المهم ندخل في الموضوع وخطوات الدرس بإذن الله :

اولا افتح الفوتوشوب وصمم لك صوره بمقاس 87 * 18 ويكون تصميم نوعا ما هادئ ..
مثال :

واحفظها بصيغة png باسم captcha


ثانياً أنشى ملف بإسم captcha.php
وهذا محتواه :
كود PHP:
<?php
//Start the session so we can store what the code actually is.
session_start();

//Now lets use md5 to generate a totally random string
$md5 md5(microtime() * mktime());

/*
We dont need a 32 character long string so we trim it down to 5
*/
$string substr($md5,0,5);

/*
Now for the GD stuff, for ease of use lets create
 the image from a background image.
*/

$captcha imagecreatefrompng("./captcha.png");


/*
 Hxdec_arr : Transform hexcolor to 255 format.
 @color : color format without '#' . 
 @return Array  
*/
function Hxdec_arr($color){
$int hexdec($color);
$arr = array("red" => 0xFF & ($int >> 0x10),
             
"green" => 0xFF & ($int >> 0x8),
             
"blue" => 0xFF $int);
return 
$arr;
}


/*
Lets set the colours, the colour $line is used to generate lines.
 Using a blue misty colours. The colour codes are in RGB
*/



$black imagecolorallocate($captcha000);

$c1 Hxdec_arr('DAEDF6');
$c2 Hxdec_arr('9CB7C4');

$line imagecolorallocate($captcha,$c1["red"],$c1["green"],$c1["blue"]);
$line2 imagecolorallocate($captcha,$c2["red"],$c2["green"],$c2["blue"]);

/*
Now to make it a little bit harder for any bots to break, 
assuming they can break it so far. Lets add some lines
in (static lines) to attempt to make the bots life a little harder
*/
imageline($captcha,0,0,39,29,$line);
imageline($captcha,-100,57,34,8,$line2);
imageline($captcha,0,0,39,29,$line);
imageline($captcha,40,0,64,29,$line2);

/*
Now for the all important writing of the randomly generated string to the image.
*/
imagestring($captcha,5201$string$black);


/*
Encrypt and store the key inside of a session
*/

$_SESSION['key'] = md5($string);

/*
Output the image
*/
header("Content-type: image/png");
imagepng($captcha);


?>

وملفك اللي فيه الفورم أضف عليه الصوره وحقل باسم code :
كود بلغة HTML:
<input name="code" type="text" /><img src="captcha.php" alt="فضلا انقل الموجود بالصوره"  />
أخيرا ملفك اللي موجه له الفورم :

تستعمل فيه التشييك التالي :

كود PHP:
if(md5($_POST['code']) != $_SESSION['key'])
  die(
"عفوا كود خاطئ!");
else
  echo 
'لقد أدخلت الكود بشكل صحيحّ!'
ولا تنسى يكون في بدايه ملفاتك تضع بداية للسسيشن اذا كان عندك ملف header.php او global تضع في اوله
كود PHP:
session_start(); 
ملف للتجريب للي مافهم : test.php :
كود PHP:
<?
session_start
();
if (
$_GET['a'] =='check' && $_POST){

    
    if(
md5($_POST['code']) != $_SESSION['key'])
      die(
"عفوا كود خاطئ!");
    else
      echo 
'لقد أدخلت الكود بشكل صحيحّ!';
}
?>


<form action="?a=check" method="post">
<input name="code" type="text" /><img src="captcha.php"  /><br />
<input type="submit" name="submit" value="Submit"  /> 
</form>
مثال :
http://www.artsisland.net/flasher/up...ptcha/test.php

لي عودة بإذن الله لمن لديه استفسار ..

روابط ذو صله :
http://codewalkers.com/tutorials/95
http://www.planet-source-code.com/vb...d=739&lngWId=8

ولانسونا من صالح دعائكم ،
المشرف التقني على موقع رياض القرآن.






__________________
موقع رياض القرآن متخصص بالقرآن الكريم
WwW.Ryadh-Quran.NeT
لمراسلتي
رياض القرآن غير متواجد حالياً   قديم 14-09-2006, 04:57 PM
عضو نشيط جدا
تاريخ التسجيل: Sep 2006-
#2 (permalink)  

أيضا بإمكانك تعديل الجملة المطلوبه بتعديل المتغير string .. فلو مثلا نبغاه يطلعلنا ارقام فقط
نجعله :
كود PHP:
$string rand(11111,99999); 
مشكورين على المتابعة ،،






__________________
موقع رياض القرآن متخصص بالقرآن الكريم
WwW.Ryadh-Quran.NeT
لمراسلتي
رياض القرآن غير متواجد حالياً   قديم 15-09-2006, 03:03 PM
عضو سوبر نشيط
تاريخ التسجيل: Nov 2002-
#3 (permalink)  

جزاك الله كل خير على المعلومات المفيده
وجاري التطبيق






__________________
مــــوف نــــت
MSN: mofnet@hotmail.com
MOF NET غير متواجد حالياً   قديم 15-09-2006, 10:13 PM
عضو نشيط
تاريخ التسجيل: Dec 2000-
#4 (permalink)  

درس جميل أخى العزيز .. بارك الله فيك

و لكنى اعتقد أنه فى قسم الـ php سيلقى صدا أوسع

و لا تحرمنا جديدك






Colombo غير متواجد حالياً   قديم 15-09-2006, 10:13 PM
عضو نشيط جدا
تاريخ التسجيل: Sep 2006-
#5 (permalink)  

الف شكر لك

وطريقة رائعة حقا






__________________
شبكة البيت للتصميمات وبرمجة الاسكربتات الخاصة
http://www.Elbayt.NeT
الزواج - العقارات -الاخبار- مجلات خاصة - نيوك - منتديات - قروبات - مستعمل - الجوال - الوظائف - واى من الاسكربتات الخاصة
elbayt.net غير متواجد حالياً   قديم 16-09-2006, 01:22 PM
عضو نشيط جدا
تاريخ التسجيل: Sep 2006-
#6 (permalink)  

اقتباس:
جزاك الله كل خير على المعلومات المفيده
وجاري التطبيق
وياك أخي شرفني مرورك ..

اقتباس:
رس جميل أخى العزيز .. بارك الله فيك

و لكنى اعتقد أنه فى قسم الـ php سيلقى صدا أوسع

و لا تحرمنا جديدك
تسلم والله .. نعم لم انتبه للقسم المعذرة توي مسجل لاتشره
وابشر باللي يسرك ان شاء الله .

اقتباس:
الف شكر لك

وطريقة رائعة حقا
العفو يالغالي ..






__________________
موقع رياض القرآن متخصص بالقرآن الكريم
WwW.Ryadh-Quran.NeT
لمراسلتي
رياض القرآن غير متواجد حالياً   قديم 16-09-2006, 08:17 PM
عضو نشيط
تاريخ التسجيل: Nov 2005-
#7 (permalink)  

أستفسار
هل هناك خطر لو أجعل المتداد ( .jpg )



وشكرا






__________________
سبحان الله وبحمده & سبحان الله العضيم
ATmax غير متواجد حالياً   قديم 14-10-2006, 02:20 PM
عضو نشيط
تاريخ التسجيل: May 2005-
#8 (permalink)  

ألف شكر أخوي رياض القرآن وجزاك الله كل خير

ولقد إستفدت من الدرس في برنامج اتصل بنا المتقدم

http://www.ac4p.com/test/my/

ولك كل التقدير






ac4p.com غير متواجد حالياً   قديم 14-10-2006, 10:58 PM
عضو نشيط جدا
تاريخ التسجيل: Sep 2006-
#9 (permalink)  

اقتباس:
المشاركة الأصلية كتبت بواسطة ATmax
أستفسار
هل هناك خطر لو أجعل المتداد ( .jpg )



وشكرا
هلا بك اخوي ..

لا يوجد خطر ولا شئ

لكن اذا حبيت تستعمل هالامتداد يلزمك بعض التعديلات في الكود

كود PHP:
$captcha imagecreatefrompng("./captcha.png"); 
تصبح
كود PHP:
$captcha imagecreatefromjpeg("./captcha.jpg"); 
كود PHP:
header("Content-type: image/png"); 
imagepng($captcha); 
تصبح
كود PHP:
header("Content-type: image/jpeg"); 
imagejpeg($captcha); 
اقتباس:
المشاركة الأصلية كتبت بواسطة ac4p.com
ألف شكر أخوي رياض القرآن وجزاك الله كل خير

ولقد إستفدت من الدرس في برنامج اتصل بنا المتقدم

http://www.ac4p.com/test/my/

ولك كل التقدير
الله يخليك يالغالي ..
شرفني مرورك الكريم.






__________________
موقع رياض القرآن متخصص بالقرآن الكريم
WwW.Ryadh-Quran.NeT
لمراسلتي
رياض القرآن غير متواجد حالياً   قديم 14-10-2006, 11:42 PM
عضو نشيط
تاريخ التسجيل: May 2006-
#10 (permalink)  

ما شاء الله جزاك الله خير الجزاء وأخيراً سوف نتخلص من السبام إن شاء الله .


تحياتي إليك عزيزي وفي إنتظار إبداعاتك .






أبو روان غير متواجد حالياً   قديم 17-10-2006, 10:24 AM
عضو نشيط
تاريخ التسجيل: Jan 2005-
#11 (permalink)  

شكراً لك ,, درس رائع






__________________
∂∂∂∂∂∂∂∂∂∂∂∂∂∂∂∂∂∂
http://www.m6nu5.com
M6NU5 غير متواجد حالياً   قديم 19-10-2006, 03:13 AM
عضو نشيط جدا
تاريخ التسجيل: Sep 2006-
#12 (permalink)  

اقتباس:
المشاركة الأصلية كتبت بواسطة أبو روان
ما شاء الله جزاك الله خير الجزاء وأخيراً سوف نتخلص من السبام إن شاء الله .


تحياتي إليك عزيزي وفي إنتظار إبداعاتك .
شرفني مرورك الكريم ،،


اقتباس:
المشاركة الأصلية كتبت بواسطة M6NU5
شكراً لك ,, درس رائع
العفو يالغالي ،،






__________________
موقع رياض القرآن متخصص بالقرآن الكريم
WwW.Ryadh-Quran.NeT
لمراسلتي
رياض القرآن غير متواجد حالياً   قديم 19-10-2006, 03:57 AM
عضو سوبر نشيط
تاريخ التسجيل: Feb 2003-
#13 (permalink)  

الاخ رياض

شكر على السكربت الجميل جدا

عندي مشكلة وهي عند تعديل السكربت كالاتي

كود PHP:

 session_start
();
  
$cat=   $_GET['cat']; 
  echo 
$cat ;
if (
$_GET['a'] =='check' && $_POST){

    if(
md5($_POST['code']) != $_SESSION['key'])
   
      die(
"عفوا كود خاطئ!");
    else
    
    {
 
echo 
$cat

يظهر المتغير $cat في الاول صحيح
والثاني فارغ هل من حل لاظهار بشكل صحيح ايضا
وشكر لك






download غير متواجد حالياً   قديم 08-03-2007, 12:01 PM
عضو فعال
تاريخ التسجيل: Sep 2006-
#14 (permalink)  

بارك الله فيك






بدر 821 غير متواجد حالياً   قديم 08-03-2007, 12:43 PM
عضو نشيط
تاريخ التسجيل: Sep 2005-
#15 (permalink)  

يعطيك العافي اخي مشرف رياض القرآن

بالنسبة للكود يحتاج الغاء الشرط الثاني حتى ينفذ نموذجك بقية مهام الفورم

بعد التعديل

كود PHP:
if(md5($_POST['code']) != $_SESSION['key']) 
  die(
"عفوا كود خاطئ!"); 
موسوعة الفتاوى الإسلامية






hsn67 غير متواجد حالياً   قديم 11-07-2008, 01:11 PM
مشرف سوالف عامة و خبير في التسوق من الانترنت
تاريخ التسجيل: Oct 2003-
#16 (permalink)  

ألف شكر للمفضله






__________________
سبحان الله وبحمده

احسب البيج رانك والباك لينكس لموقعك
====
دليلك للشراء من الانترنت
====
مهـنــدسـ كـويــتــــيـ ..
WwW.Q8iEnG.NeT
====
تبي مساعدة بـ C++??
====
شاعر_الظلام غير متواجد حالياً   قديم 11-07-2008, 01:40 PM
موضوع مغلق


 

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

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

كود [IMG] متاحة
كود HTML معطلة
Trackbacks are متاحة
Pingbacks are متاحة
Refbacks are متاحة



الساعة الآن: 07:07 PM بتوقيت المملكة العربية السعودية