پرتال تیم آسان وب

دوشنبه 13 آذر 1402

پرتال تیم آسان وب

ایمیل:
vatan-design

آموزش آپلود فایل در php همراه با امنیت

آموزش آپلود فایل در php همراه با امنیت
  • شناسه محصول
    98
  • Professional Product
  • Easy Install
  • Iranian Product
  • Verified Product
ارسال شده در یکشنبه 1398/10/08
خدمت شما کاربران محترم وبسایت آموزش برنامه نویسی و طراحی وب سلام عرض می کنم. امروز هم با یک آموزش ویژه در خدمت شما هستم. امروز با آموزش آپلود تصویر توسط php در خدمت شما هستیم.
پیش نیازها:
قبل از شروع آموزش لازم است تا با مفاهیم زیر آشنایی داشته باشید:
آموزش  طراحی وب HTML و CSS
آموزش PHP
آپلود فایل توسط php
همانطور که می دانید آپلود و بارگزاری تصویر از ابزارهایی بسیار کاربردی برای مدیریت یک وبسایت است. توسط PHP به راحتی می توانید فایل ها را در سرور آپلود کنید. البته همین راحتی در آپلود فایلها می تواند امنیت سایت را به خطر بیاندازد پس حتما باید مراقب فایل های ارسالی باشید. در این آموزش ابتدا فایل آپلود شده را از نظر نوع و حجم بررسی می کنیم و در صورت صحت اطلاعات آن را روی سرور آپلود می کنیم.

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

ابتدا مطمئن شوید که php مجوز آپلود فایل را می دهد. برای این کار فایل "php.ini" را باز کنید و عبارت file_uploads را جستجو کنید و سپس مقدار آن را به on تغییر دهید.
file_uploads = On
PHP

ساخت فرم HTML

سپس یک فرم HTML بسازید تا کاربران قادر به انتخاب تصویر و ارسال آن به سمت سرور جهت آپلود را داشته باشند.
<!DOCTYPE html>
 <html>
  <body>
   <form action="upload.php" method="post" enctype="multipart/form-data">
    Select image to upload: <input type="file" name="myFile" id="myFile">
    <input type="submit" value="Upload Image" name="submit">
   </form>
  </body>
 </html>

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

  1. فرم حتما با روش post ارسال شود.
  2. فرم حتما بایستی از خصوصیت enctype="multipart/form-data" استفاده کند. این خصوصیت مشخص می کند که فرم چه نوع محتوایی را ارسال می کند.
بدون رعایت نکات بالا آپلود فایل کار نخواهد کرد.
فرم بالا داده ها را به سمت فایلی با نام upload.php ارسال می نماید. در ضمن فرم دارای یک تگ <input> از نوع file است که کاربر با کلیک روی دکمه Browse تصویر مورد نظر خود را انتخاب و توسط دکمه submit به سمت سرور ارسال می کند.

ساخت فایل آپلود در PHP

فایل upload.php شامل کدهای زیر است:
<?php
$upload_dir = "uploads/";
$upload_file = $upload_dir . basename($_FILES["myFile"]["name"]);
$uploadOk = 1;
$imageFileType = strtolower(pathinfo($upload_file,PATHINFO_EXTENSION));
// Check if image file is a actual image or fake image
if(isset($_POST["submit"])) {
    $check = getimagesize($_FILES["myFile"]["tmp_name"]);
    if($check !== false) {
        echo "File is an image - " . $check["mime"] . ".";
        $uploadOk = 1;
    } else {
        echo "File is not an image.";
        $uploadOk = 0;
    }
}
?>
PHP

توضیج کدهای PHP بالا:

  • $upload_dir = "uploads/": تعیین کننده پوشه یا دایرکتوری محل ذخیره فایل است
  • $upload_file: تعیین کننده مسیره ذخیره فایل است.
  • $uploadOk: مقدار پیشفرض 1 دارد و اگر در هنگام آپلود فایل خطایی صورت گرفت مقدار آن برابر 0 می شود و سپس پیام اخطار نمایش داده میشود.
  • $imageFileType: توسط تابع pathinfo پسوند فایل فرستاده شده را در خود ذخیره میکند.( حروف بزرگ به کوچک تبدیل می شوند)
سپس در ادامه بررسی می کنیم که فایل فرستاده شده تصویر واقعی است یا نوع دیگری
توجه داشته باشید بایستی یک پوشه با نام uploads جهت ذخیره تصاویر بسازید. نام این پوشه با مقدار $upload_dir برابر می کند.
بررسی موجود بودن فایل
حال می توانیم کمی محدودیت اعمال کنیم. در این قسمت بررسی می کنیم که اگر فایل با این نام قبلا آپلود شده یک پیام خطا به کاربر نمایش داده شود.
if (file_exists($upload_file)) {
    echo "Sorry, file already exists.";
    $uploadOk = 0;
}
PHP

این کار توسط تابع file_exists() روی مسیر تعیین شده توسط $upload_file انجام می شود. این تابع موجودیت یک فایل را در مسیر داده شده بررسی می کند و مقدار true یا false را بر می گرداند.

بررسی اندازه فایل

حال بررسی می کنیم که اگر حجم فایل ارسال شده بیشتر از 500KB باشد پیام اخطار نمایش داده شود و مقدار $uploadOk نیز برابر 0 شود.
if ($_FILES["myFile"]["size"] > 500000) {
    echo "Sorry, your file is too large.";
    $uploadOk = 0;
}
PHP

محدودیت برای نوع فایل

مقدار متغیر $imageFileType برابر با پسوند فایل ارسال شده است. با استفاده از همین متغیر می توانیم تعیین کنیم که فقط تصاویر با پسوندهای jpg,png,gif,jpeg می توانند آپلود شوند.
if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"
&& $imageFileType != "gif" ) {
    echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed.";
    $uploadOk = 0;
}
PHP

تکمیل فایل upload.php

در نهایت مقدار $uploadOk را بررسی می کنیم. اگر 0 بود پیام خطای آپلود فایل به کاربر نمایش داده می شود. و اگر برابر با 1 بود توسط تابع move_uploaded_file() تصویر مورد نظر را آپلود می کنیم. این تابع دو پارامتر اجباری دریافت می کند. اولین پارامتر فایل آپلود شده در پوشه مقوت tmp سرور و دومین پارمتر مسیر تعیین شده برای آپلود فایل روی سرور است.

if ($uploadOk == 0) {
        echo "Sorry, your file was not uploaded.";
// if everything is ok, try to upload file
    } else {
        if (move_uploaded_file($_FILES["myFile"]["tmp_name"], $upload_file)) {
            echo "The file ". basename( $_FILES["myFile"]["name"]). " has been uploaded.";
        } else {
            echo "Sorry, there was an error uploading your file.";
        }
    }
PHP


گوگل اپ کاربردی Stack را برای اسکن و مدیریت اسناد معرفی کرد کلاب‌هاوس قابلیت کمک مالی به محتواسازان را به اپلیکیشن خود اضافه کرد چگونه اینترنت اشیاء بر صنعت مخابرات تأثیر می‌گذارد؟ ال جی از نخستین ربات های محافظ مبتنی بر شبکه 5G رونمایی کرد هوش مصنوعی می تواند تشخیص PTSD باشد
محصولات مرتبط
فروشگاه سایت پشتیبانی