اسکریپت باران | دانلود اسکریپت و سورس اندروید

بزرگترین فروشگاه سورس کد، اسکریپت، افزونه و قالب : codemilo.ir
برای درخواست هر سورس اندروید، اسکریپت و قالب از سایت کدکنیون و تم فارست با این ایمیل در ارتباط باشید : codingshop20@yahoo.com
https://codingshop.net
اسکریپت باران اسکریپت باران
تبلیغات
آخرین محصولات

آپلود (upload) یک فایل، در PHP

755 بازدید

نسخه :

معمولا سایت های کاربردی مختلف، قسمتی را برای آپلود (upload) فایل توسط کاربر قرار می دهند تا کاربر بتواند یک عکس، فایل فشرده شده (zip) یا هر نوع فایلی که مد نظر بوده است را بر روی سرور سایت، آپلود نماید. باید دقت داشت که هنگامی که به کاربر اجازه می دهیم که فایلی را بر روی سرور سایت ما آپلود کند، عملا راهی برای نفوذ به سایت خود، در اختیار وی قرار داده ایم، بنابراین برای اینکه از سوء استفاده های احتمالی جلوگیری کنیم، باید یک سری محدودیت را برای آپلود فایل اعمال نماییم. ابتدا یک کد ساده را برای آپلود فایل معرفی می کنیم، اما این کد به درد استفاده واقعی نمی خورد و تنها برای این است که با چگونگی کدنویسی برای آپلود فایل آشنا بشوید، پس از آن، یک کد حرفه ای تر را معرفی می کنیم که با اعمال یک سری محدودیت، امنیت را بیشتر می کند.

برای قسمت آپلود، ابتدا یک فرم HTML می سازیم و سپس اطلاعات حاصل از فرم را به یک فایل PHP می فرستیم تا بر روی آن اطلاعات، پردازش کند (این شیوه کلی ساخت فرم ها است). بنابراین یک فایل با نامی دلخواه می سازیم و کدهای زیر را درون آن می نویسیم (چون یک فرم HTML است، پس می تواند پسوند فایل، html یا php باشد) :

همان طور که از کد بالا مشخص است، این فرم، اطلاعات را با روش POST ، به فایل upload_file.php می فرستد تا این فایل، بر روی اطلاعات دریافتی، پردازش کند. مشخصه enctype برای فرم، مشخص می کند که نوع اطلاعاتی که کاربر ارسال می کند، چه می باشد. با انتخاب multipart/form-data برای این مشخصه، اعلام کرده ایم که اطلاعات ارسالی، به صورت اطلاعات دودویی (binary data) است.

درون تگ input ، مشخصه type را برابر file قرار داده ایم تا اعلام کنیم که نوع ورودی، به صورت فایل می باشد. بنابراین درون فرم، یک دکمه browse به کاربر نمایش داده می شود تا با آن بتواند فایل مورد نظر را از کامپیوتر خود انتخاب نماید.

ظاهر فرم، به صورت زیر خواهد بود :

upload-form

یک فایل با نام upload_file.php می سازیم و کدهای زیر را درون آن می نویسیم :

متغیر $_FILES ، یک متغیر فوق سراسری (superglobal) می باشد.

ایجاد یک سری محدودیت برای آپلود فایل :

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

این بار، کدهای فایل upload_file.php را به صورت زیر می نویسیم :

در کد بالا تعیین کرده ایم که نوع فایلی که کاربر آپلود می کند، تنها می تواند gif یا jpeg یا png باشد و حداکثر حجم آن نیز باید 20 کیلوبایت (kB) باشد (فایل های بزرگتر، آپلود نخواهند شد). اگر کاربر، فایلی را انتخاب کند که در شرایط فوق صدق نکند، آنگاه یک پیام با عنوان Invalid file به وی نمایش داده می شود.

 

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

با کد قبل، تنها یک کپی از فایل، به صورت موقت نگهداری می شود. عمر این نسخه کپی از فایل، تنها تا پایان اجرای کدها می باشد، بنابراین باید کدهایمان را به گونه ای تغییر بدهیم که بتوانیم فایل را در یک فولدر از سایت، ذخیره نماییم. کدهای فایل upload_file.php را به صورت زیر تکمیل می کنیم :

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

 

کد بالا ابتدا چک می کند که آیا فایل درون فولدر upload وجود دارد یا خیر و چنانچه فایل وجود نداشته باشد، یک کپی از آن را در فولدر upload ذخیره خواهد کرد. در صورتی که فایلی با آن نام درون فولدر upload وجود داشته باشد، یک پیام نمایش داده می شود که فایل هم اکنون وجود دارد و بنابراین فایل جدید، ذخیره نخواهد شد.

 

نکته : چنانچه بخواهیم که بجای نام اصلی فایل، یک نام دیگر برای آن انتخاب کنیم، باید به جای این بخش از کدها :

کد زیر را بنویسیم :

البته من تنها به عنوان مثال، نام myImage.png را انتخاب کردم تا بدانید که کدام قسمت را باید تغییر بدهید، در صورتیکه یک کد کامل، باید شامل تشخیص نوع فایل نیز باشد تا نام جدید فایل، دارای پسوند مناسب باشد.

 

نکته : اگر بخواهیم که فایل در فولدری غیر از فولدر upload ذخیره شود، باید کلمه upload را در کدها، به نام فولدر مورد نظرمان تغییر بدهیم.

 

توضیحات بیشتر در مورد کدها :

در ادامه، نکاتی را در مورد کدها ذکر خواهیم کرد.

نکته 1 : با استفاده از کدهای زیر، پسوند فایل را تشخیص داده و در یک متغیر ذخیره می کنیم :

تابع explode یک علامت و یک رشته (string) را دریافت می کند و سپس، رشته مورد نظر را بر اساس علامتی که تعیین کرده ایم، به چندین رشته تجزیه کرده و به صورت یک آرایه رشته ای بر می گرداند. دقت کنید که متغیر فوق سراسری $_FILES ، حاوی اطلاعات فایل در حال آپلود می باشد، بنابراین، عبارت زیر، نام فایل در حال آپلود را به ما می دهد :

بنابراین به تابع explode ، نام فایل در حال آپلود را داده ایم و همچنین علامت نقطه (.) را به عنوان علامت مورد نظرمان برای تجزیه رشته (string) انتخاب نموده ایم، بنابراین مثلا فرض کنید که کاربر فایلی با نام myFile.number2.png را برای آپلود انتخاب کند، آنگاه تابع explode ، یک آرایه رشته ای، حاوی سه رشته زیر را بر می گرداند :

این آرایه رشته ای، در $temp ذخیره می شود. سپس با تابع end ، آخرین عنصر تابع را در متغیر $extensionذخیره می کنیم، زیرا پسوند فایل، همان آخرین رشته قرار گرفته در آرایه رشته ای می باشد. بنابراین پسوند را در متغیر $extension خواهیم داشت و با آن، می توانیم نوع فایل انتخاب شده توسط کاربر را تشخیص بدهیم.

 

نکته 2 :

یکی از شرط هایی که برای چک کردن صحیح بودن فایل انتخاب شده برای آپلود، در کدها نوشته ایم، به صورت زیر می باشد :

تابع in_array برای چک کردن وجود یک مقدار در یک آرایه می باشد. اگر مقدار ذخیره شده در متغیر $extensionکه همان پسوند فایل انتخاب شده می باشد، در آرایه $allowedExts موجود باشد، آنگاه تابع in_array ، مقدار 1 را برمی گرداند و در غیر این صورت، مقدار 0 را برمی گرداند. آرایه $allowedExts همان آرایه حاوی پسوندهای مجاز برای آپلود فایل می باشد که قبلا آن را به این صورت تعریف کردیم :

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

 

 




سورس کتاب اندروید سورس شبکه اجتماعی اندروید سورس تاکسی یاب اندروید سورس فروشگاه اینترنتی اندروید سورس کد برنامه تاکسی یاب مشابه تپ سی و اسنپ
سورس فروشگاه اینترنتی اندروید سورس کتاب اندروید
دانلود سورس موبوگرام دانلود سورس تلگرام
پیشنمایش محصول
قوانین و مقررات

برنامه نویسی را معنایی دوباره بخشیم !