- چهارشنبه 22 مهر 1405 ساعت 04:00
- 3.1.9
- کامل شده
- منقضی شده
CAPTCHA Helper برای ساخت تصویر و عبارت امنیتی استفاده میشود تا ارسال خودکار فرمها دشوارتر شود. این Helper به GD و قابلیت نوشتن در پوشه تصویر نیاز دارد. دادههای تولیدشده باید در Session یا محل امن دیگری نگهداری شوند تا هنگام ارسال فرم قابل مقایسه باشند.
کاربرد و توابع اصلی
تابع create_captcha() آرایهای شامل نام فایل، مسیر، زمان ایجاد و کلمه تولیدشده برمیگرداند. پارامترهای اصلی شامل مسیر ذخیره، URL عمومی تصویر، طول عبارت، ابعاد و فونت هستند. پس از نمایش تصویر، مقدار صحیح را در Session نگه دارید و پس از اعتبارسنجی پاک کنید.
نمونه استفاده
$this->load->helper('captcha');
$vals = array(
'word' => '', 'img_path' => FCPATH . 'captcha/',
'img_url' => base_url('captcha/'), 'img_width' => 180,
'img_height' => 50, 'expiration' => 7200
);
$captcha = create_captcha($vals);
$this->session->set_userdata('captcha_word', $captcha['word']);نکته مهم
ورودی را اعتبارسنجی کنید و خروجی را متناسب با محل نمایش Escape کنید. این Helper جایگزین کنترل دسترسی و سیاست امنیتی برنامه نیست.
مطالعه مرتبط
برای ادامه مطالعه، کوئری، SQL Injection را ببینید.
توابع CAPTCHA Helper
| متد یا مفهوم | کاربرد |
|---|---|
create_captcha($data) | ساخت تصویر و متن CAPTCHA. |
word | عبارت تولیدشده. |
img_path و img_url | مسیر فایل و URL تصویر. |
img_width و img_height | ابعاد تصویر. |
expiration | زمان نگهداری فایل. |
font_path | مسیر فونت در صورت نیاز. |
نکات استفاده در پروژه
Helperها معمولاً وضعیت داخلی نگه نمیدارند و برای تبدیل یا تولید مقدارهای کوچک مناسباند. آنها را فقط در Controller یا فایلهای View بارگذاری نکنید، اگر در چند بخش برنامه استفاده میشوند میتوانید در تنظیمات Autoload قرار دهید. در عین حال، بارگذاری همه Helperها بهصورت سراسری ضرورتی ندارد و بهتر است وابستگی هر بخش روشن بماند.
در زمان استفاده، ورودی را از نظر نوع و محدوده بررسی کنید، خروجی HTML را متناسب با محل نمایش Escape کنید و مسیر فایل را از داده خام کاربر نسازید. اگر تابعی به دیتابیس، شبکه یا وضعیت Session وابسته است، آن رفتار دیگر یک Helper ساده نیست و بهتر است در Service یا Library مستقل قرار بگیرد.
در بازبینی کد، ترتیب و نتیجه متدهای create_captcha($data)، word، img_path و img_url، img_width و img_height را بررسی کنید. نام متد بهتنهایی تضمین نمیکند ورودی معتبر یا خروجی امن باشد، بنابراین رفتار هر متد را با تست و مستندات همان نسخه کنترل کنید.