آموزش آپلود فایل از طریق یک فرم در پی.اچ.پی (How to upload a file in PHP)
بحث آپلود فایل در PHP نکاتی دارد که باید به آن دقت کنید. پیش از هر چیز هشدار میدهیم که یک فیلد آپلود فایل، اولین جایی است که یک هکر برای نفوذ به سایت، به آن فکر میکند!
پس به شدت مراقب باشید و نکات ایمنی که توضیح خواهم داد را رعایت کنید.
ما بحث آپلود فایل روی سرور را به چند مرحله تقسیم میکنیم:
1- طراحی فرم برای دریافت فایل از کاربر:
ابتدا به این کد دقت کنید و سعی کنید آنرا تحلیل کنید:
<form enctype="multipart/form-data" action="upload.php" method="post"> <input type="hidden" name="MAX_FILE_SIZE" value="1000000" /> <input type="file" name="attachment" /> <input type="submit" value="ارسال" /> </form>
فرم به این صورت دیده خواهد شد:
مشخص است که این فرم، یک فیلد برای دریافت فایل و یک دکمه ارسال دارد. اطلاعات فرم به فایل upload.php فرستاده میشود و در آنجا تحلیل میشود.
در این مرحله توجه به نکات زیر الزامی است:
- در فرمی که قرار است یک فایل را به صفحه پردازشگر ارسال کند، نوشتن عبارت enctype="multipart/form-data" الزامی است. (خط اول در کد بالا)
- متود این نوع فرمها حتماً باید post باشد. (خط اول در کد بالا)
- یک تگ input با نوع file نیاز دارید. (خط سوم در کد بالا)
- خط دوم کد بالا فیلدی مخفی (hidden) برای تعیین حجم مجاز فایل در سمت کلاینت. اگر از این فیلد استفاده نکنید، کاربر ممکن است یک فایل حجیم را انتخاب کند و زمان زیادی منتظر بماند تا آپلود شود و بعد شما در سمت سرور حجم را بررسی کنید و بگویید که حجم آن زیاد است!! از این فیلد استفاده کنید تا بدون معطلی، اگر حجم فایل، بیش از حد مجاز بود، به کاربر هشدار داده شود. (حجم را بر حسب بایت وارد کنید)
هشدار: دور زدن این فیلد بسیار ساده است! پس فقط به استفاده از این فیلد اکتفا نکنید و در سمت سرور نیز حجم فایل را بررسی کنید!
2- کدنویسی فایل پردازشگر فرم:
حالا باید فایل upload.php را کدنویسی کنید.
به کد زیر دقت کنید و سعی کنید آنرا تحلیل کنید:
<?php
$uploaddir='backup/';
$uploadfile=$uploaddir . basename($_FILES['attachment']['name']);
if (move_uploaded_file($_FILES['attachment']['tmp_name'], $uploadfile))
{
echo 'فایل با موفقیت آپلود شد';
}
else
echo 'مشکلی در آپلود فایل به وجود آمد.
- حجم فایل باید کمتر از 1000 کیلوبایت باشد.
- پوشه backup باید دارای سطح دسترسی 777 باشد.';
?>
مراحل:
- ابتدا در خط دوم یک متغیر در نظر گرفتهایم که مسیر آپلود را مشخص میکند.
- در خط سوم، نام فایل را به دست آوردهایم و به انتهای مسیر آپلود چسباندهایم.
- در خط چهارم گفتهایم اگر عملیات آپلود فایل با موفقیت انجام شد، پیغام "فایل با موفقیت آپلود شد" را نمایش بده. در غیر اینصورت، خطاهای احتمالی را.
3- بررسی پسوند:
اگر میخواهید فایل را محدود به یک پسوند خاص کنید (مثلاً jpg) از قطعه کد زیر استفاده کنید:
این کد را باید قبل از echoی اول در کد بالا به کار بگیرید.
4- خواندن فایل:
اگر میخواهید اطلاعات فایلی که آپلود شده است را بخوانید و احتمالاً بررسی کنید که حاوی کدهای مخرب و ... نباشد، از قطعه کد زیر استفاده کنید:
این کد را باید بعد از echoی اول در کد فایل پردازشگر به کار بگیرید.
حالا تمام محتوای فایل در متغیر theData است. میتوانید آن را به هر صورت که خواستید پردازش کنید...
توجه: در این مقاله، کلماتی مثل MAX_FILE_SIZE و name در $_FILES['attachment']['name'] کلمات کلیدی هستند و نباید تغییر یابند. (بهتر است اگر در ابتدای راه هستید، نامها را تغییر ندهید)موفق باشید؛
حمید رضا نیرومند
.
- مطالب مرتبط:
- چگونه گزینه های انتخاب شده یک CheckBox را با کمک inputهای hidden به صفحه سوم منتقل کنیم؟
- در آمدی بر زبان PHP
- نوشتن بر روی عکس با GD در PHP
- آموزش نمایش تاریخ هجری شمسی با استفاده از PHP در صفحات وب
- نکاتی در مورد کار با URL در پی.اچ.پی (Working with addresses in PHP)
- چگونه با PHP از اطلاعات دیتابیس خروجی csv بگیریم که کاراکترها درست نمایش داده شوند؟
- ------------
- بهترین روش ترکیب چند شرط اختیاری در WHERE در MySQL مبتنی بر PHP
- حل یک مشکل: پوشههای مخفی (Hidden) من به هیچ وجه نمایان (Show) نمیشوند!
- چطور بفهمیم فرمت یک فایل چیست و با چه نرمافزاری باز میشود؟
- اتصال پاکت.پی.سی به اینترنت از طریق کامپیوتر - How to connect PPC to internet via PC
- چگونه فایلها و پوشههای خصوصی را مخفی کنید (How to hide files and folders)
ارسال سؤال یا نظر
11- parviz:
بوسیله: , در: Thursday, 2013 April 18-کد: 6643
mer30!
12- :
بوسیله: , در: Wednesday, 2013 August 21-کد: 7728
خوب بود ممنون
فقط منم نفهمیدم چطور باید تو پوشه ذخیره بشه؟؟؟؟؟؟؟؟؟
13- رضا:
بوسیله: , در: Tuesday, 2014 January 14-کد: 9188
سلام
اگر بخواهیم یک فرم تماس بسازیم که توش علاوه بر ذکر مشخصات (نام و نام خانوادگی و شماره تماس) یه فایل رو آپلود کنه و به ایمیلمون بفرسته چه کدی باید بنویسیم؟
لطفا کدش رو توی سایتتون بزارید
ایمیل من :
irtarjome@yahoo.com
14- علی:
بوسیله: , در: Tuesday, 2014 January 28-کد: 9353
عالی بود
15- pln:
بوسیله: , در: Wednesday, 2014 April 30-کد: 10163
ممنون
16- Arash:
بوسیله: , در: Sunday, 2014 June 08-کد: 10497
salam kheyli khob bod mamanon
17- نعیمه:
بوسیله: , در: Tuesday, 2014 July 08-کد: 10835
مشکلم حل شد ممنون
18- zohre:
بوسیله: , در: Monday, 2015 October 26-کد: 13931
mercCcCccccc
19- Whisper:
بوسیله: Whisper, در: Sunday, 2025 May 04-کد: 16758
عالی و مفید بود.