ثبت نام کنید

ورود

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

رمز عبور خود را فراموش کرده اید؟ آدرس ایمیل خود را وارد کنید، یک ایمیل حاوی لینک بازیابی رمز عبور برای شما ارسال می شود.

پرسیدن سوال

برای پرسیدن سوال، باید وارد حساب کاربری خود در سایت شوید.
در بین 779 آموزش و 1522 پرسش به دنبال چه هستید؟

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


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

سلام

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

آپلود فایل PHP

آپلود فایل PHP

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

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

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

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

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

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

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

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

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

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

ایجاد فرم HTML

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

حتما بخوانید:  معرفی ربات تلگرامی آپلود فایل به تلگرام با url

قوانیی که باید در فرم 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$ نام پوشه ذخیره سازی فایل های آپلود شده را قرار دادیم.

حتما بخوانید:  سورس پرداخت درون برنامه ای بازار - B4A

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

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

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

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

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

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

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

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

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

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

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

حتما بخوانید:  آموزش HTML - قسمت نهم(مفهوم css)

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

موفق باشید.

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

در صورتی که از بپرسم راضی بودید؛ میتوانید حمایت مالی کنید

دنبال کردن من

پاسخ دهید