سیستم مدیریت محتوای دروپال فارسی

مشکل اسپمها در webform و راه حل آن با کمک افزونه Captcha

چند وقت پیش در انجام یک کار دروپالی به مشکلی برخوردم و با کمی تحقیق تونستم برطرفش کنم
اینجا هم مینویسم که شاید به درد بقیه هم بخوره.
البته نمیدونم این قسمت فروم برای اینکار مناسبه یا نه.
در یکی از پروژه هایی که انجام دادم یک قسمت از کار طراحی چند فرم برای درسافت اطلاعات از کاربران بود که به راحتی با استفاده از ماژول قدرتمند webform انجام شد.
بعد از گذشت چند روز اسپمرها به سایت حمله کردند و کلا مدیریت سایت رو مختل کردند.

خوب بهترین راه حلی که به ذهنم رسید استفاده از Captcha بود که ماژول بسیار خوبی هم برای دروپال در همین زمینه وجود داره : http://drupal.org/project/captcha
تا اینجا که مشکلی نبود ولی ست کردن Captcha روی فرم هایی که webform میسازه یه نکته خیلی ساده داره که مدتی منو درگیر کرد و وقتی که راه حلش رو پیدا کردم دیدم که چقدر ساده است.
توی ماژول Captcha میشه برای هر فرمی که دروپال میسازه (حتا poll یا ستاره دادن با fivestar) ولی باید شناسه فرم (form id) رو به این ماژول بدیم تا Captcha رو لود کنه.
پیدا کردن شناسه فرم های webform هم به راحتی و با کمک firebug انجام میشه. فرم های webform وقتی که توی سایت لود میشن سورسی شبیه این دارند :‌

<form enctype="multipart/form-data" class="webform-client-form" id="webform-client-form-22" method="post" accept-charset="UTF-8" action="/form/form">

برای این مثال شناسه فرم میشه webform-client-22 ولی مشکل اینه که اگه این شناسه رو به captcha بدید قبولش نمیکنه و میگه چنین فرمی وجود نداره!
و راه حل اینه که به جای - از ـ استفاده کرد! به همین سادگی :D

یعنی شناسه این فرم که برای Captcha قابل قبول باشه webform_client_form_22 هست و با دادن این شناسه به captcha فرمها دارای captcha میشن و دیگه شر اسپمرها کنده میشه.

یک مثال رو هم میتونید اینجا :‌
http://www.parvazshop.com/form/%D8%AB%D8%A8%D8%AA-%D8%A7%D8%B7%D9%84%D8%A7%D8%B9%D8%A7%D8%AA-%D9%88%D8%A7%D8%B1%DB%8C%D8%B2-%D8%A8%D9%87-%D8%AD%D8%B3%...
ببینید.