آپلود فایل در PHP

آپلود فایل در PHP

پی اچ پی این امکان را به شما می‌دهد که یک فایل را در سرور خود آپلود کنید.برای این که کاربران بتوانند یک فایل را در سرور شما آپلود نمایند ساده ترین کار ایجاد یک فرم بارگذاری فایل است.

ساختن یک فرم برای آپلود فایل

فرم به سایت شما این امکان را می‌دهد که کاربران به خیلی ساده یک فایل را آپلود نمایند. در مثال زیر کد نویسی یک فرم HTML را برای آپلود  فایل  در PHP مشاهده می‌کنید.

نکات موجود در فرم HTML بالا:

  • مشخصه enctype در برچسب فرم بیان کننده نوع محتوای فایلی است که می‌خواهد آپلود شود.
  • multipart/form-data زمانی استفاده می‌شود که فایلی که می‌خواهد آپلود شود از جنس  داده های باینری باشد.
  • مشخصه “type=”file در برچسب input زمانی استفاده می‌شود که ورودی به عنوان یک فایل پردازش شود. در حقیقت مسئول پردازش فرم است.

در نظر داشته باشید که بارگذاری فایل از طرف کاربران در سرور کاری پر خطر است. تنها به کاربرانی مطمئن اجزا آپلود یک فایل در PHP را بدهید.

ساختن اسکریپت هایی برای آپلود فایل در PHP

فایلی که در دستور HTML ساختیم به نام “upload_file.php” است. این فایل شامل کد هایی برای آپلود فایل در PHP است. این کد ها به صورت زیر است:

در مثال بالا کد PHP به صورت شرطی نوشته است که اگر متغیر گلوبال file_$ دارای خطا بود، نمایش دهد که خطا وجود دارد و اطلاعات دیگر را نمایش ندهد در غیر این صورت یعنی اگر متغیر هیچ خطایی را شامل در بر نداشت، نام فایل، نوع فایل، سایز وکپی نام فایلی که به صورت موقتی در سرور ذخیره شده است را نمایش می‌دهد.

پارامترهایی که در ورودی فایل استفاده می‌شود به صورت زیر است:

     نام فایلی که آپلود شده است: $_FILES[“file”][“name”]

نوع فایلی که آپلود شده است:$_FILES[“file”][“type”]

سایز فایلی که آپلود شده است :$_FILES[“file”][“size”]

کپی نام فایلی که به صورت موقتی در سرور ذخیره شده است:$_FILES[“file”][“tmp_name”]

این یک روش ساده برای آپلود یک فایل در PHP است. اما ب دلایل امنیتی باید محدودیت هایی برای فایلی هایی که کاربران مجاز به بارگذاری هستند قرار دهید.

محدودیت آپلود فایل در PHP

در این اسکریپت ها یک سری محدودیت ها برای آپلود فایل ها قرار می‌دهیم. در این مثال تنها فایلی هایی با فرمت های .gif .jpeg و . png و حداکثر تا ۲۰ کیلو بایت می‌توان آپلود کرد.

   در این دستور یک آرایه تعریف شده است که اگر فایلی که می‌خواهیم بارگذاری شود باید یکی از این فرمت ها را دارا باشد و سایز این فایل کمتر از ۲۰۰۰۰ هزار بایت باشد و در آخر if اول نوشته شده است” و اگر  پسوند فایل در آرایه جزو پسوندهای معرفی شده باشد شرط زیر را بررسی کن”

extension یک متغییری به نام Temp تعریف کرده است و آخرین temp مورد نظرش است(فرمت فایل). متغیر temp می‌گوید اگر نام فایل دارای چندین آرایه بود آن را با علامت” . ” از هم جدا کن. در حقیقت آخرین آرایه بعد از نقطه همان فرمت فایل می‌شود.

ذخیره کردن فایل آپلود شده

هنگامی که اسکریپت ها به پایان رسیدند یک کپی به صورت موقت از فایل نمایان می‌شود. برای این که فایل آپلود شده را ذخیره کنیم نیاز داریم آن را در یک جای دیگر کپی کنیم. به مثال زیر دقت کنید:

 مثال قبل همان مثال بالاست با این تفاوت که می‌خواهیم آن را ذخیره کنیم. اگر فایل وجود داشت نمایش بده که فایل وجود دارد و اگر وحود نداشت یک کپی از آن را ذخیره کن و نام آن را آپلود بساز.

 

11 نظرات شما

  • mohamad

    فروردین ۱۲, ۱۳۹۳ at ۲:۳۹ ق.ظ
    کارت حرف نداره!!! اولین دختری هستی که میبینم انقدر کارت خوبه! عااااالی
  • mostafa

    مهر ۱۵, ۱۳۹۳ at ۴:۵۶ ب.ظ
    سلام. من اسم جدول رو فایل میزارم ؛ فایل آپلود میشه اما توی دیتابس ذخیره نمیشه لینکش. اما وقتی نوع فیلد رو تغییر میدم مثلا تکست میزارم اطلاعات توی دیتابیس ذخیره میشه. ممنون میشم راهنمایی کنید
  • Web Developer

    دی ۲۲, ۱۳۹۳ at ۱۰:۲۵ ق.ظ
    ممنون از آموزش شما
  • ابی

    دی ۲۵, ۱۳۹۳ at ۹:۴۱ ق.ظ
    خوب بود ، ممنون
  • اسماعیل

    مرداد ۱۴, ۱۳۹۴ at ۲:۵۰ ق.ظ
    عالی بود.ممنون. اون نکته jpeg خیلی ظریف و دردسر ساز بود که مطلب شما بهش اشاره داشت.
  • حسین

    بهمن ۱۱, ۱۳۹۴ at ۴:۳۸ ب.ظ
    با عرض سلام خدمت شما خیلی خیلی ممنونم به خاطر آموزش عالیتون . ان شاء ا... همیشه موفق باشید .
  • جورج

    بهمن ۲۱, ۱۳۹۴ at ۱۲:۵۸ ب.ظ
    کارت برخلاف بسیاری از آموزش دهنده ها خوب است. خود من هم همینکار را می کنم. البته بجز پی اچی پی مدت زیادی در کار کامپیوتر هستم. اما نمیدانستم یک خانم اینطور خوب نکات برنامه نویسی یاد میدهد. در ضمن سایت من تازه گذاشتم البته تنها قالب دارد و هنوز محتوا نگذاشته ام آنرا بمرور زمان پر می کنم. در ضمن پیشنهاد می کنم اگر مناسب می بینی روی پروژه های مشترک کار کنیم
  • آرش

    فروردین ۸, ۱۳۹۵ at ۲:۱۳ ب.ظ
    سلام خسته نباشید ممنون از زحمات شما در مورد این مبحث ، باید بگم این فرم آپلود به هیچ وجه امن نیست !
  • آرش

    فروردین ۸, ۱۳۹۵ at ۲:۱۶ ب.ظ
    نمیدونم چرا نظر قبلی ارسال شد :D ببینید برای تامین امنیت آپلود فایل ها ، به هیچ وجه نمیشه به بررسی فرمت فایل ها بسنده کرد. برای مثال من میتونم اکسپلویت شل خودم رو با فرمت .php.jpg به خورد سرور بدم ! یا بیام کد php خودم رو در قسمت header یا exif عکس وارد کنم ، سرور اون رو اجرا میکنه ! بهترین روش در حال حاضر برای تامین امنیت بالای 90% در مورد آپلود فایل های عکس در php ، استفاده از کتابخانه gd هست. یعنی بیایم عکس دریافت شده رو ، دوباره بنویسیم از روش ! اینطوری اگر فایل عکس آلوده به کد مخرب باشه ، به دلیل از نو نوشته شدن ، کد مخرب تبدیل به حروف بی ارزش میشه و قابلیت اجرا پیدا نمیکنه. بهتره در کنار بررسی فرمت فایل ، سایز فایل و موارد دیگه ، برای اپلود عکس حتما و حتمااااااااا از کتابخانه gd استفاده کنید وگرنه امکان هک سایت شما تا حد 90% افزایش پیدا میکنه !
  • siyavash

    فروردین ۱۰, ۱۳۹۵ at ۹:۲۶ ق.ظ
    سلام و خسته نباشید ببخشید میشه بگید چطوری میشه کنار همین تصویر اپلودی thumb (سایز کوچک)مربع در سایز های مختلف ایجاد کرد ؟!
  • امین شونم

    اردیبهشت ۱۴, ۱۳۹۵ at ۱۲:۲۵ ب.ظ
    سلام خسته نباشی بد نبود ولی کلا کپی بود اگه استفاده کردی بهم نشون بده کار کردشو ما که دهنمون سرویس شد که تو تمام سایتا این روشو دیدیم جالبم اینجاس که نوع تعریف کردنشونم یه جوره موفق باشی

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *


© 2013 Mobtadi. All rights reserved.
کلیه حقوق مادی و معنوی برای وبسایت مبتدی محفوظ است.