- جمعه 24 مهر 1405 ساعت 06:00
- 3.1.9
- کامل شده
- منقضی شده
Download Helper ارسال فایل به مرورگر را ساده میکند. تابع اصلی force_download() نام فایل و محتوای آن را دریافت میکند و Headerهای لازم برای دانلود را میفرستد. میتوانید محتوای فایل را از حافظه یا از فایل موجود بخوانید.
کاربرد و توابع اصلی
پارامتر اول نامی است که کاربر هنگام دانلود میبیند و پارامتر دوم محتوای فایل است. مقدار TRUE در پارامتر سوم میتواند خروجی را بهصورت Base64 تفسیر کند. مسیر فایل را از ورودی خام کاربر دریافت نکنید.
نمونه استفاده
$this->load->helper('download');
$csv = "id,name\n1,Keyboard\n2,Mouse";
force_download('products.csv', $csv);نکته مهم
ورودی را اعتبارسنجی کنید و خروجی را متناسب با محل نمایش Escape کنید. این Helper جایگزین کنترل دسترسی و سیاست امنیتی برنامه نیست.
مطالعه مرتبط
برای ادامه مطالعه، کوئری، SQL Injection را ببینید.
تابع Download Helper
| متد یا مفهوم | کاربرد |
|---|---|
force_download($filename, $data) | ارسال محتوا بهصورت فایل دانلودی. |
filename | نامی که در مرورگر نمایش داده میشود. |
data | محتوای فایل یا داده Base64. |
headers | Headerهای دانلود توسط Helper مدیریت میشوند. |
security | مسیر و مجوز فایل را پیش از ارسال بررسی کنید. |
نکات استفاده در پروژه
Helperها معمولاً وضعیت داخلی نگه نمیدارند و برای تبدیل یا تولید مقدارهای کوچک مناسباند. آنها را فقط در Controller یا فایلهای View بارگذاری نکنید، اگر در چند بخش برنامه استفاده میشوند میتوانید در تنظیمات Autoload قرار دهید. در عین حال، بارگذاری همه Helperها بهصورت سراسری ضرورتی ندارد و بهتر است وابستگی هر بخش روشن بماند.
در زمان استفاده، ورودی را از نظر نوع و محدوده بررسی کنید، خروجی HTML را متناسب با محل نمایش Escape کنید و مسیر فایل را از داده خام کاربر نسازید. اگر تابعی به دیتابیس، شبکه یا وضعیت Session وابسته است، آن رفتار دیگر یک Helper ساده نیست و بهتر است در Service یا Library مستقل قرار بگیرد.
در بازبینی کد، ترتیب و نتیجه متدهای force_download($filename, $data)، filename، data، headers را بررسی کنید. نام متد بهتنهایی تضمین نمیکند ورودی معتبر یا خروجی امن باشد، بنابراین رفتار هر متد را با تست و مستندات همان نسخه کنترل کنید.