بحثت كثيرا في الإنترنت ولم أجد أي سكريبت يدعم كابتشا captcha باللغة العربية. هل يعلم أحدكم كيفية عمل ذلك باللغة العربية؟
كيف نعمل Captcha بالعربي؟
عملها باللغه العربية مش منطقي لآنو في ناس ماعندهم كيبورد عربي
بس إذا كان ولا بد تعملها بالعربي فمافي مشكله :)
بدك توخد حروف خط معين كالتالي :
ا ب بـ ـبـ ت تـ ـتـ ث ـتـ ج جـ ـجـ .... وهكذا لكل الحروف
بعدين بدك تعمل نظام يكتب الكلمه من خلال صور الحروف
يعني تمسك صورة بـ وصورة ـسـ وصورة ـا وصورة م مشان تكتب كلمة بسام
طبعا هاي الطريقه الصعبة :) الطريقة السهله هيه إنك تكتب كلمة عربية وأعتقد اللينكس خلاف الويندوز ماعنده مشكله باللغه شو نوعها
رح أجرب إذا كان عندي وقت وأكتب على صورة عربي وأشوف النتيجه , إذا مازبطت بدك ترجع للحل الأول :) الأصعب
ستحتاج للكتابه باستخدام خط عربى + GD
ابحث عن موضوع هنا فى المنتدى يحل هذه المشكله
وبما انه تقريبا لاتوجد bots لكسر العربى حاليا (لا لشىء الا لعدم اهميه الموضوع) ... فستكون قويه بما فيه الكفايه اظن :)
شكراً لك اخي الكريم
ولكن لماذا يصر الإخوة على أن الموضوع غير مهم أو غير ضروري؟ الصراحة أنا أجده مهم من الناحية الجمالية والثقافية.
أنا شخصيا أتضايق عندما أري صفحة تسجيل باللغة العربية والكابتشا بالإنجليزية وأقول لنفسي لو أنهم جعلو الكابتشا بالعربية أو بالأرقام فقط.
لماذا نجبر المستخدم إلى تحويل اتجاه الكيبورد إلى الإنجليزية أثناء التسجيل بالعربية؟
بالإضافة إلى ذلك، من غير الجميل من وجهة نظر التصميم أن تحتوي الصفحة كلها على اللغة العربية إلا في الجزء الذي يعنى بحماية الصفحة من الاختراق.
وهناك أمر آخر قد نغفل عنه، العديد من سكريبتات الكابتشا تظهر كلمات قاموسية wordlist للمستخدم. أي أن المستخدم يعتمد لاإراديا على شيئين:
1- ذاكرته المفرداتية التي تساعده على التنبؤ بالكلمات المخربشىة.
2- نظره ودماغه البشري القادر على المقاربة بين كل كلمة أو حرف مع المخزون الذي لديه.
لذلك فلو كان هنالك مستخدم عربي لا يحمل مخزونا مفرداتيا كافياً، فقد يكون الأمر أصعب عليه. في هذه الحالة، الحل الأفضل من وجهة نظري هو الأرقام أو الحروف العربية.
شوفو هالكابتشا الافتراضية، مناسبة لغويا وثقافية للمستخدم العربي وبإمكاننا جعلها أجمل:

وشكراً
لاحظ هذه المثال ..
<?php
// Set the content-type
header('Content-type: image/png');
// Create the image
$im = imagecreatetruecolor(400, 30);
// Create some colors
$white = imagecolorallocate($im, 255, 255, 255);
$grey = imagecolorallocate($im, 128, 128, 128);
$black = imagecolorallocate($im, 0, 0, 0);
imagefilledrectangle($im, 0, 0, 399, 29, $white);
// Palestine in unicode
$text = 'ﻦﻴﻄﺴﻠﻓ';
// Replace path by your own font path
$font = 'arial.ttf';
imagettftext($im, 20, 0, 11, 21, $grey, $font, $text);
// Add the text
imagettftext($im, 20, 0, 10, 20, $black, $font, $text);
// Using imagepng() results in clearer text compared with imagejpeg()
imagepng($im);
imagedestroy($im);
?>قمت باستخدام خط arial كما هو واضح في مثال , اما الحروف العربية فهي ماخوذه من مواقع الحروف العربية HEX في جدول unicode لانه عند وضع الحروف بشكل مباشرة
تظهر منفردة مثلا : ف ل س ط ي ن لذلك هناك في نفس الخط اشكال الحروف عندما تاتي بشكل متشابك انظر هنا http://en.wikipedia.org/wiki/Arabic_Unicode
مثلا عند تشغيل المثال يظهر كلمة " فلسطين "
اقتباس$text = 'ﻦﻴﻄﺴﻠﻓ';
بهذه الحاله سيقوم المستخدم بإدخال هذه الرموز صح ؟
أعتقد موضوع البرمجه سيكون صعب قليلا , يعني يقوم الكود بتصنيف جميع الرموز التي تعني حرف ب مثلا أنها حرب ب وبهذا تكون الأمور أفضل
فكرة الارقام لوحدها أفضل والأرقام كما نعلم عربية وبهذا يكون الموقع عربي 100%:)
bastr3 كتب:بهذه الحاله سيقوم المستخدم بإدخال هذه الرموز صح ؟
بتاكيد لا و غير منطقي ان يقوم بهذه اصلا...
يمكننا تخزين الكلمات في مصفوفة key=>value اي مصفوفة ترابطية associative array بعد ذلك نختار key على اساس انه كلمة قبل تشفيرها في HEX بعد ذلك عند ادخال مستخدم نستطيع ان نعمل مقارنة من key نفسه مثلا : -
<?php
session_start();
// Set the content-type
header('Content-type: image/png');
// Create the image
$im = imagecreatetruecolor(200,30);
// Create some colors
$white = imagecolorallocate($im, 255, 255, 255);
$grey = imagecolorallocate($im, 128, 128, 128);
$black = imagecolorallocate($im, 0, 20, 30);
$array = array($grey,$black);
imagefilledrectangle($im, 0, 0, 199,29, $white);
// The text to draw
$words = array ( "فلسطين"=>"ﻦﻴﻄﺴﻠﻓ",
"عربي"=>"ﻲﺑﺮﻋ");
$key = array_rand($words);//get a random key i.e. flsteen or 3rbe
$_SESSION['cap'] = $key;
// Replace path by your own font path
$font = 'arial.ttf';
// Add the text
imagettftext($im, 20, 0, 10, 20, $black, $font,$words[$key] );
// Using imagepng() results in clearer text compared with imagejpeg()
imagepng($im);
imagedestroy($im);
?>صفحة الاستدعاء
<? session_start(); ?> <img src="arCap.php" /> <br> <? if($_SESSION['cap'] == $_GET['cap']) echo "Ok .. thats true"; else echo "Oops..Wrong capatcha! plz try again ."; ?>
ألنتيجه في مرفقات
على كل حال هذه طريقة من عشرات طرق , يمكن عمل دالة تقوم بتعامل مع مواضع الحروف و تقوم بانتاج ما يقابلها بلهيكس لرسمها ..
تم تعديل هذه المشاركة بواسطة ahmad123 في 10 يونيو 2009 في 01:14
برأيي تفادي تغيير الكيبورد و الشكل الجمالي في كفة... و تكاليف تطوير النظام... مشاكل المستخدمين بدون كي بورد عربي ...
ما اعتقد وجود تقارب حتى....
من ناحية اخرى... جدول للكلمات راح يكون جدا سهل كسر الحماية عنه... لابد يكون انشائها تلقائي
تم تعديل هذه المشاركة بواسطة Ryn في 10 يونيو 2009 في 09:10

CCNA, CCNA Security, CCNP
هناك فكرة ممتازه لتفادي اللغه .... وهي رموز بدل الأحرف وبهذا تبعد عن موقعك شبهة اللغة
كنت سأرفق صورة توضيحية ولكن النت عندي بطيء جدا :(
تم تعديل هذه المشاركة بواسطة bastr3 في 12 يونيو 2009 في 14:25
ماذا بخصوص وضع كيبورد عربي للي ما معه واحد :) اقتراح بس
يعني اذا كان موقع عربي وموجه للعرب نقدر نقول 95% عرب والي يكتبون عرب = كيبورد عربي
مثل http://www.arabic-keyboard.org
او مثل فكرت عربي http://www.araby.com - عند الضغط ع لوحة مفاتيح تظهر
او من خلال http://www.yamli.com/arabic-keyboard او اذا امكن استخدام http://www.yamli.com/api/
تحياتي
