عضویت در سایت

ورود

فراموشی رمز عبور

رمز عبور خود را فراموش کرده اید؟ ایمیل خود را وارد کنید

ورود

عضویت در سایت

رایگان ثبت نام کنید و سوالات خود را بپرسید، همچنین میتوانید در پاسخگویی به سوالات دیگر کاربران نیز سهیم باشید، هر مشکلی در ثبت نام یا ورود داشتید با ایمیل beporsam@gmail.com در ارتباط باشید

در بین 1170 آموزش و 2023 پرسش به دنبال چه هستید؟

ویندوز
نصب آنلاین ویندوز

ویندوز 7,8,10,11
مشاوره
مشاوره خرید لپ تاپ و کامپیوتر

مشاوره حرفه ای دریافت کن
بلاگ
مقالات آموزشی

1k+
پشتیبانی آنلاین

سخت افزار/نرم افزار

آموزش پیشرفته PHP – آپلود فایل

سلام

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

آپلود فایل PHP

آپلود فایل PHP

نکته ای که قبل از شروع آموزش باید بهش توجه بسیار زیادی داشته باشید:

اگر نمیدانستید بدانید که آسیب پذیر ترین بخش یک سایت، بخش آپلود فایل آن هست، چرا که هکر با روش های مختلفی میتواند یک شل در سایت آپلود کند و دسترسی به کل اطلاعات شما داشته باشد،

آپلود فایل در PHP بسیار آسان است، و همین آسانی باعث شده تا باعث خطر پذیری زیادی شود؛ چرا که اگر مسائل امنیتی در هنگام آپلود فایل را رعایت نکنیم، هکر به سادگی می توانید با آپلود یک شل ساده، دسترسی کل سایت را در دست بگیرد.

پیکربندی فایل php.ini

برای اینکه در PHP دسترسی آپلود فایل را داشته باشیم، ابتدا باید فایل php.ini را پیکربندی کنیم.

اگر دارای سرور اختصاصی هستید، فایل php.ini را باز کنید و به دنبال عبارت file_uploads بگردید و مقدار آن را به On تغییر دهید:

اگر هاست اشتراکی دارید این مورد در ۹۹ درصد مواقع توسط مدیر سرور فعال شده است.

نمونه کد ساده فرم آپلود فایل

همانطور که قبلا گفته شد، آپلود فایل در PHP بسیار آسان است، شما با قرار دادن تکه کد زیر و اجرای آن در سرور میتوانید هر نوع فایلی را در سرور آپلود و ذخیره کنید:

با همین قطعه کد ساده توانستیم تا یک فرم آپلود ایجاد کنیم، ولی این فرم بسیار آسیب پذیر است. در سمت سرور(کدهای PHP) باید اعتبار سنجی هایی را انجام دهیم تا اینکه مطمئن شویم فایلی که کاربر میخواد آپلود کنه، مخرب نباشه، این قطعه فرم رو صرفا جهت آشنایی گذاشتم، در ادامه آموزش میریم تا یک فرم آپلود ایمن بسازیم.

مطلب پیشنهادی:  آموزش کار با مولتی پنل آنلاین در بیسیک فور اندروید

ایجاد فرم HTML

در سرور میخواهیم عکس آپلود کنیم، ابتدا باید یک فرم بسازیم، قطعه کد زیر یک فرم آپلود تصویر میسازد:

قوانیی که باید در فرم HTML بالا رعایت شود:

  • متد ارسال اطلاعات در فرم آپلود باید post باشد(method=post).
  • هنگامیکه در فرم، داده هایی دودویی مثل محتوای یک فایل میخواهد ارسال شود، نیاز به خاصیتی به نام enctype داریم که در بر گیرنده مقدار multipart/form-data است که مشخص کننده نوع محتوای آپلود شده است(enctype=multipart/form-data).

بدون الزامات فوق، قادر به آپلود فایل نیستید

موارد دیگری که باید در نظر داشته باشید:

نوع فیلدی که برای انتخاب فایل در نظر میگیرید، باید از نوع file باشد، که باعث میشود در کنار فیلد یک دکمه جهت انتخاب فایل ها از سیستم مورد استفاده قرار گیرد.

فرم بالا اطلاعات را به فایل upload.php جهت پردازش ارسال میکند(در این فایل کدهای PHP قرار دارد).

کدهای سمت سرور

فایل upload.php که در برگیرنده کدهای سمت کلاینت(فرم HTML) هست، به صورت زیر است:

توضیحات:

  • متغیر target_dir$ محل ذخیره ی فایل های آپلود شده را مشخص میکند(در اینجا ما یک پوشه به اسم uploads ساختیم و آدرس پوشه را در این متغیر ذخیره کردیم).
  • متغیر target_file$ مسیر فایل+ نام فایل را در خود نگه میدارد.
  • متغیر uploadOk$ را خودمون ساختیم، و مقدار پیشفرض را برابر ۱ قرار دادیم، توسط این متغیر تعیین میکنیم که آیا فایل آپلود شده تصویر است یا خیر(در ادامه بیشتر توضیح میدهیم).
  • متغیر imageFileType$ پسوند فایل آپلود شده را در خود ذخیره میکنید(توسط این متغیر میتوانیم بر اساس پسوند فایل آپلود شده شرطی بزاریم که آیا این فایل آپلود شده تصویر واقعی است یا فایل جعلی، در ادامه بیشتر توضیح میدهیم).
مطلب پیشنهادی:  سریعترین راه برای خاموش کردن صفحه نمایش ویندوز

نکته: در کنار فایل upload.php باید پوشه ای به اسم uploads بسازید، زیرا که در متغیر target_dir$ نام پوشه ذخیره سازی فایل های آپلود شده را قرار دادیم.

حالا بریم سراغ امن کردن بخش آپلود و شرط های ضروری که برای آپلود فایل مورد نیاز است را بنویسیم، از این قسمت به بعد را سعی کنید به خوبی یاد بگیرید.

چگونه بررسی کنیم که آیا فایل از قبل وجود دارد یا خیر

طبیعتا نباید فایل های همنام و تکراری در سرور وجود داشته باشد، به همین منظور توسط تابع file_exists چک میکنیم که آیا نام فایل انتخاب شده توسط کاربر در پوشه uploads که در متغیر target_file$ ذخیره شده است قرار دارد یا خیر، اگه قرار داشت متغیر uploadOk$ را برابر ۰ قرار میدهیم.

محدودیت آپلود نوع فایل

توسط قطعه کد زیر به کاربر اجازه آپلود فایل هایی با پسوند عای PNG, JPG, JPEG و GIF را میدهیم، در غیر این صورت کاربر هر فایلی که آپلود کرد متغیر uploadOk را برابر ۰ قرار میدهیم تا از آپلود جلوگیری و پیغام خطا نشان دهیم.

محدودیت حجم فایل

نام input که برای آپلود فایل در فرم html قرار دارد، fileToUpload نام گذاری شده است.

برای آپلود فایل ها باید محدودیت حجم بزاریم که کاربر نتواند هر حجم فایلی را آپلود کند. برای مثال در قطعه کد زیر محدودیت حجم فایل ۵۰۰ کیلوبایت قرار دادیم که کاربر نتواند فایل بیشتر از ۵۰۰ کیلوبایت آپلود کند اگر حجم فایل بیش از حجم تعیین شده بود، مقدار uploadOk$ را برابر ۰ قرار میدهیم و از ادامه کار جلوگیری میکنیم.

مطلب پیشنهادی:  آموزش مقدماتی PHP – قسمت سیزدهم(مرتب سازی آرایه ها)

سه شرط مهم که برای آپلود فایل ها میتوانستیم اعمال کنیم، تا اینجا گفته شد، شما هم اگر امنیت سایت برایتان مهم است، حتما این سه شرط را اعمال کنید تا آپلود فایل ایمنی داشته باشید.

اسکریپت آپلود فایل

فایل upload.php ما با تمامی مباحث گفته شده تا الان به صورت زیر شده است:

این قسمت از آموزش نیز به پایان رسید، اگر مشکلی در رابطه با آموزش بالا داشتید، در بخش پرسش و پاسخ سایت بپرسید.

موفق باشید.

درباره احمد آخوندیمدیر سایت

همیشه در تلاش برای یادگیری :) ارتباط با من: 09159352892

دنبال کردن

ارسال نظر

رفتن به بالا

سامانه آموزشی و خدماتی بپرسم

اولین وب سایت آموزشی و پرسش و پاسخ در ایران

بپرسم را میتوان به عنوان مرجعی برای آموزش و حل مشکلات دانست، در بپرسم سعی کرده ایم آموزش های برنامه نویسی، طراحی سایت، کار با نرم افزارها ها و… را آموزش دهیم. همچنین محیطی فراهم کرده ایم تا کاربران بتوانند در این محیط سوالات خود را بپرسند و مشکل خود را حل کنند.