فوریه 21, 2019 Mostafa بدون دیدگاه

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

توجه : درخواست افزونه ،قالب، اسکریپت و نرم افزار و ... و سوالات و مشکلات خود را در انجمن ارسال نمایید

کار با دایرکتوری ها

توابع کار با پوشه ها در PHP :

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

آیا نصب برنامه ای لازم است ؟

تمامی توابع کار با پوشه ها جزء هسته اصلی PHP بوده و به صورت پیش فرض نصب می باشند . بنابراین برای استفاده از آنها نیاز به نصب برنامه ای خاص یا تغییر تنظمیاتی در سرور خود ندارید .

لیست توابع کار با پوشه ها در PHP :

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

نام تابع کاربرد
chdir ( ) به وسیله این تابع می توانید پوشه جاری که درون آن هستید را عوض کنید .
chroot ( ) به وسیله این تابع می توانید پوشه اصلی ( root ) پروسه جاری خود را عوض کنید .
dir ( ) این تابع برای باز کردن و دسترسی به یک پوشه در سرور استفاده می شود .
closedir ( ) این تابع پوشه جاری و دسترسی به آن را می بندد .
getcwd ( ) این تابع آدرس و نام پوشه جاری که درون آن هستید را نمایش می دهد .
opendir ( ) این تابع ، پوشه ای که نام یا آدرس آن را برایش تعیین کرده اید ، باز می کند .
readdir ( ) این تابع می تواند فایل ها و محتویات درون یک پوشه را که قبلا توسط تابع ( ) opendir باز شده است را خوانده و بر می گرداند .
scandir ( ) این تابع لیست فایل ها و محتویات درون یک پوشه یا مسیر تعیین شده برای آن را به صورت یک آرایه بر می گرداند .

 

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

پی اچ پی این امکان را به شما می‌دهد که یک فایل را در سرور خود آپلود کنید.برای این که کاربران بتوانند یک فایل را در سرور شما آپلود نمایند ساده ترین کار ایجاد یک فرم بارگذاری فایل است.

ساختن یک فرم برای آپلود فایل

فرم به سایت شما این امکان را می‌دهد که کاربران به خیلی ساده یک فایل را آپلود نمایند. در مثال زیر کد نویسی یک فرم HTML را برای آپلود  فایل  در PHP مشاهده می‌کنید.

 

 

<html>
<body>
 
<form action="upload_file.php" method="post"
enctype="multipart/form-data">
<label for="file">Filename:</label>
<input type="file" name="file" id="file"><br>
<input type="submit" name="submit" value="Submit">
</form>
 
</body>
</html>

 

نکات موجود در فرم HTML بالا:

  • مشخصه enctype در برچسب فرم بیان کننده نوع محتوای فایلی است که می‌خواهد آپلود شود.
  • multipart/form-data زمانی استفاده می‌شود که فایلی که می‌خواهد آپلود شود از جنس  داده های باینری باشد.
  • مشخصه “type=”file در برچسب input زمانی استفاده می‌شود که ورودی به عنوان یک فایل پردازش شود. در حقیقت مسئول پردازش فرم است.

در نظر داشته باشید که بارگذاری فایل از طرف کاربران در سرور کاری پر خطر است. تنها به کاربرانی مطمئن اجزا آپلود یک فایل در PHP را بدهید.

ساختن اسکریپت هایی برای آپلود فایل در PHP

فایلی که در دستور HTML ساختیم به نام “upload_file.php” است. این فایل شامل کد هایی برای آپلود فایل در PHP است. این کد ها به صورت زیر است:

<?php
if ($_FILES["file"]["error"] > 0)
  {
  echo "Error: " . $_FILES["file"]["error"] . "<br>";
  }
else
  {
  echo "Upload: " . $_FILES["file"]["name"] . "<br>";
  echo "Type: " . $_FILES["file"]["type"] . "<br>";
  echo "Size: " . ($_FILES["file"]["size"] / 1024) . " kB<br>";
  echo "Stored in: " . $_FILES["file"]["tmp_name"];
  }
?>

 

در مثال بالا کد PHP به صورت شرطی نوشته است که اگر متغیر گلوبال file_$ دارای خطا بود، نمایش دهد که خطا وجود دارد و اطلاعات دیگر را نمایش ندهد در غیر این صورت یعنی اگر متغیر هیچ خطایی را شامل در بر نداشت، نام فایل، نوع فایل، سایز وکپی نام فایلی که به صورت موقتی در سرور ذخیره شده است را نمایش می‌دهد.

پارامترهایی که در ورودی فایل استفاده می‌شود به صورت زیر است:

     نام فایلی که آپلود شده است: $_FILES[“file”][“name”]

نوع فایلی که آپلود شده است:$_FILES[“file”][“type”]

سایز فایلی که آپلود شده است :$_FILES[“file”][“size”]

کپی نام فایلی که به صورت موقتی در سرور ذخیره شده است:$_FILES[“file”][“tmp_name”]

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

محدودیت آپلود فایل در PHP

در این اسکریپت ها یک سری محدودیت ها برای آپلود فایل ها قرار می‌دهیم. در این مثال تنها فایلی هایی با فرمت های .gif .jpeg و . png و حداکثر تا ۲۰ کیلو بایت می‌توان آپلود کرد.

<?php
$allowedExts = array("gif", "jpeg", "jpg", "png");
$temp = explode(".", $_FILES["file"]["name"]);
$extension = end($temp);
if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/jpg")
|| ($_FILES["file"]["type"] == "image/pjpeg")
|| ($_FILES["file"]["type"] == "image/x-png")
|| ($_FILES["file"]["type"] == "image/png"))
&& ($_FILES["file"]["size"] < 20000)
&& in_array($extension, $allowedExts))
  {
  if ($_FILES["file"]["error"] > 0)
    {
    echo "Error: " . $_FILES["file"]["error"] . "<br>";
    }
  else
    {
    echo "Upload: " . $_FILES["file"]["name"] . "<br>";
    echo "Type: " . $_FILES["file"]["type"] . "<br>";
    echo "Size: " . ($_FILES["file"]["size"] / 1024) . " kB<br>";
    echo "Stored in: " . $_FILES["file"]["tmp_name"];
    }
  }
else
  {
  echo "Invalid file";
  }
?>

 

در این دستور یک آرایه تعریف شده است که اگر فایلی که می‌خواهیم بارگذاری شود باید یکی از این فرمت ها را دارا باشد و سایز این فایل کمتر از ۲۰۰۰۰ هزار بایت باشد و در آخر if اول نوشته شده است” و اگر  پسوند فایل در آرایه جزو پسوندهای معرفی شده باشد شرط زیر را بررسی کن”

extension یک متغییری به نام Temp تعریف کرده است و آخرین temp مورد نظرش است(فرمت فایل). متغیر temp می‌گوید اگر نام فایل دارای چندین آرایه بود آن را با علامت” . ” از هم جدا کن. در حقیقت آخرین آرایه بعد از نقطه همان فرمت فایل می‌شود.

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

هنگامی که اسکریپت ها به پایان رسیدند یک کپی به صورت موقت از فایل نمایان می‌شود. برای این که فایل آپلود شده را ذخیره کنیم نیاز داریم آن را در یک جای دیگر کپی کنیم. به مثال زیر دقت کنید:

<?php
$allowedExts = array("gif", "jpeg", "jpg", "png");
$temp = explode(".", $_FILES["file"]["name"]);
$extension = end($temp);
if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/jpg")
|| ($_FILES["file"]["type"] == "image/pjpeg")
|| ($_FILES["file"]["type"] == "image/x-png")
|| ($_FILES["file"]["type"] == "image/png"))
&& ($_FILES["file"]["size"] < 20000)
&& in_array($extension, $allowedExts))
  {
  if ($_FILES["file"]["error"] > 0)
    {
    echo "Return Code: " . $_FILES["file"]["error"] . "<br>";
    }
  else
    {
    echo "Upload: " . $_FILES["file"]["name"] . "<br>";
    echo "Type: " . $_FILES["file"]["type"] . "<br>";
    echo "Size: " . ($_FILES["file"]["size"] / 1024) . " kB<br>";
    echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br>";
 
    if (file_exists("upload/" . $_FILES["file"]["name"]))
      {
      echo $_FILES["file"]["name"] . " already exists. ";
      }
    else
      {
      move_uploaded_file($_FILES["file"]["tmp_name"],
      "upload/" . $_FILES["file"]["name"]);
      echo "Stored in: " . "upload/" . $_FILES["file"]["name"];
      }
    }
  }
else
  {
  echo "Invalid file";
  }
?>

 

مثال قبل همان مثال بالاست با این تفاوت که می‌خواهیم آن را ذخیره کنیم. اگر فایل وجود داشت نمایش بده که فایل وجود دارد و اگر وحود نداشت یک کپی از آن را ذخیره کن و نام آن را آپلود بساز.

 


برچسب ها