Skript pro upload souborů v PHP s použitím funkce chmod pro změnu práv na 755

Upraveno 22 prosince, 2023 22:42

Občas je potřeba použít jednoduchý formulář pro upload souborů na FTP Vašeho webu. Zde je kompletní skript pro upload souborů v PHP s použitím funkce chmod pro změnu práv na 755 a s formulářem pro výběr souboru (práva si můžete pomocí chmod ve skriptu upravit na svá vlastní, požadovaná). Pamatujte, že maximální velikost souboru se řídí omezením nastaveným v php.ini daného webu. Budete tedy pravděpodobně limitováni velikostí souboru, obzvláště, pokud se bude jednat o sdílený webhosting. Jak tedy napsat jednoduchý skript pro upload souborů v PHP s použitím funkce chmod pro změnu práv na 755.

Skript pro upload souborů v PHP s použitím funkce chmod pro změnu práv na 755

Ve skriptu je pro upload použitá složka upload. Opět, pokud potřebujete cílovou složku upravit, upravte ji ve skriptu na Vámi požadovanou.

Tento skript je koncipovaný pro upload souboru .jpg, .jpeg a .png. Opět, lze dodatečně upravit.

				
					<!DOCTYPE html>
<html>
<head>
   <title>File Upload</title>
</head>
<body>
   
   <form action="" method="POST" enctype="multipart/form-data">
      <input type="file" name="file"/>
      <input type="submit" value="Upload"/>
   </form>
   
   <?php
   
   if(isset($_FILES['file'])) {
      $errors = array();
      $file_name = $_FILES['file']['name'];
      $file_size = $_FILES['file']['size'];
      $file_tmp = $_FILES['file']['tmp_name'];
      $file_type = $_FILES['file']['type'];
      $file_ext = strtolower(end(explode('.',$_FILES['file']['name'])));
      
      $extensions = array("jpeg","jpg","png");
      
      if(in_array($file_ext,$extensions) === false){
         $errors[] = "Extension not allowed, please choose a JPEG or PNG file.";
      }
      
      if($file_size > 2097152) {
         $errors[] = 'File size must be less than 2 MB';
      }
      
      if(empty($errors) == true) {
         move_uploaded_file($file_tmp,"upload/".$file_name);
         chmod("upload/".$file_name, 0755);
         echo "Success";
      } else {
         print_r($errors);
      }
   }
   
   ?>
   
<script>class RocketElementorAnimation{constructor(){this.deviceMode=document.createElement("span"),this.deviceMode.id="elementor-device-mode-wpr",this.deviceMode.setAttribute("class","elementor-screen-only"),document.body.appendChild(this.deviceMode)}_detectAnimations(){let t=getComputedStyle(this.deviceMode,":after").content.replace(/"/g,"");this.animationSettingKeys=this._listAnimationSettingsKeys(t),document.querySelectorAll(".elementor-invisible[data-settings]").forEach(t=>{const e=t.getBoundingClientRect();if(e.bottom>=0&&e.top<=window.innerHeight)try{this._animateElement(t)}catch(t){}})}_animateElement(t){const e=JSON.parse(t.dataset.settings),i=e._animation_delay||e.animation_delay||0,n=e[this.animationSettingKeys.find(t=>e[t])];if("none"===n)return void t.classList.remove("elementor-invisible");t.classList.remove(n),this.currentAnimation&&t.classList.remove(this.currentAnimation),this.currentAnimation=n;let s=setTimeout(()=>{t.classList.remove("elementor-invisible"),t.classList.add("animated",n),this._removeAnimationSettings(t,e)},i);window.addEventListener("rocket-startLoading",function(){clearTimeout(s)})}_listAnimationSettingsKeys(t="mobile"){const e=[""];switch(t){case"mobile":e.unshift("_mobile");case"tablet":e.unshift("_tablet");case"desktop":e.unshift("_desktop")}const i=[];return["animation","_animation"].forEach(t=>{e.forEach(e=>{i.push(t+e)})}),i}_removeAnimationSettings(t,e){this._listAnimationSettingsKeys().forEach(t=>delete e[t]),t.dataset.settings=JSON.stringify(e)}static run(){const t=new RocketElementorAnimation;requestAnimationFrame(t._detectAnimations.bind(t))}}document.addEventListener("DOMContentLoaded",RocketElementorAnimation.run);</script></body>
</html>

				
			
PHP skript pro připojení k MySQL databázi

Vysvětlení

  • <form>: Tato část kódu definuje formulář, kde se vybere soubor k nahrání. Atribut action určuje cílovou stránku pro odeslání formuláře (v tomto případě je prázdný, což znamená, že data budou odeslána na stejnou stránku). Atribut method určuje způsob, jakým budou data odeslána na cílovou stránku (v tomto případě se použije metoda POST). Atribut enctype určuje typ kódování dat, které se budou odesílat (v tomto případě se použije multipart/form-data pro nahrávání souborů).

  • <input type="file" name="file"> definuje v HTML formuláři pole pro výběr souboru z počítače uživatele. Tento typ políčka se používá pro nahrání souborů na server. Atribut type určuje typ políčka jako “file”, což znamená, že uživatel může vybrat soubor z počítače. Atribut name definuje jméno políčka, v tomto případě “file”. Toto jméno se použije v PHP skriptu jako klíč k dosažení informací o nahraném souboru.

  • <input type="submit" value="Upload">: Toto je tlačítko formuláře, které umožňuje uživateli odeslat soubor na server. Atribut value určuje text, který bude zobrazen na tlačítku.

  • if (isset($_FILES['file'])): Tento blok kódu se provede, pouze když byl soubor vybrán a odeslán pomocí formuláře. Funkce isset() vrátí true, pokud byla proměnná nastavena a není null. V tomto případě se kontroluje, zda byl soubor vybrán pomocí formuláře.

  • $errors: Tato proměnná slouží k uložení chyb, které se vyskytnou během kontroly souboru.

  • $file_name = $_FILES['file']['name']: Tato proměnná slouží k uložení názvu souboru, který byl odeslán. Proměnná $_FILES obsahuje informace o odeslaném souboru a index 'name' obsahuje název souboru.

  • $file_size = $_FILES['file']['size']: Tato proměnná slouží k uložení velikosti souboru, který byl odeslán. Proměnná $_FILES obsahuje informace o odeslaném souboru a index 'size' obsahuje velikost souboru v bytech.

  • $file_tmp = $_FILES['file']['tmp_name']: Tato proměnná slouží k uložení dočasného názvu souboru, který byl odeslán na server. Proměnná $_FILES obsahuje informace o odeslaném souboru a index 'tmp_name' obsahuje dočasný název souboru na serveru.

  • $file_type = $_FILES['file']['type']: Tato proměnná slouží k uložení typu souboru, který byl odeslán. Proměnná $_FILES obsahuje informace o odeslaném souboru a index 'type' obsahuje MIME typ souboru.

  • $file_ext = strtolower(end(explode('.',$_FILES['file']['name']))): Tato proměnná získává příponu souboru a zmenšuje ji na malá písmena pomocí funkce strtolower(). Funkce explode('.',$_FILES['file']['name']) rozdělí název souboru na jednotlivé části podle tečky a vrátí pole. Funkce end() získá poslední prvek z pole.

  • $extensions = array("jpeg","jpg","png"): Tato proměnná obsahuje seznam povolených přípon souborů.

  • in_array($file_ext,$extensions) === false: Tato funkce kontroluje, zda přípona souboru není v poli povolených přípon. Pokud není, do proměnné $errors se přidá chybová zpráva.

  • if($file_size > 2097152): Tato funkce kontroluje, zda velikost souboru není větší než 2 MB. Pokud ano, do proměnné $errors se přidá chybová zpráva.

  • empty($errors) == true: Tato funkce kontroluje, zda proměnná $errors je prázdná. Pokud ano, znamená to, že nebyly nalezeny žádné chyby a soubor může být nahrán.

  • move_uploaded_file($file_tmp,"upload/".$file_name): Tato funkce přesune nahraný soubor z dočasné složky na server do složky upload/ s názvem souboru $file_name.

  • chmod("upload/".$file_name, 0755): Tato funkce nastavuje práva pro soubor na 755, což umožňuje čtení, zápis a spuštění souboru vlastníkovi, ale pouze čtení ostatním uživatelům.

  • print_r: Tato funkce slouží k výpisu obsahu pole, v tomto případě pole $errors. Funkce print_r vypíše informace o poli, jako jsou například klíče a jejich hodnoty. Pokud je pole $errors prázdné, tak se nic nevypíše. Pokud však pole obsahuje nějakou hodnotu, tak se výpis hodnoty pole vypíše na stránce. Tyto hodnoty by měly být chybovými zprávami, které se objeví v případě, že nějaký soubor nemá povolenou příponu nebo má příliš velkou velikost.

Tento skript bude uploadovat soubory bez omezení na koncovku a bude mít maximální velikost souboru 128 MB.

U složky “Upload” pozor na velké počáteční U. Je nutné případně upravit velikost, jelikož Linuxové servery rozlišují malá a velká písmena.

				
					<!DOCTYPE html>
<html>
<head>
   <title>File Upload</title>
</head>
<body>
   
   <form action="" method="POST" enctype="multipart/form-data">
      <input type="file" name="file"/>
      <input type="submit" value="Upload"/>
   </form>
   
   <?php
   
   if(isset($_FILES['file'])) {
      $errors = array();
      $file_name = $_FILES['file']['name'];
      $file_size = $_FILES['file']['size'];
      $file_tmp = $_FILES['file']['tmp_name'];
      $file_type = $_FILES['file']['type'];
      
      if($file_size > 128000000) {
         $errors[] = 'File size must be less than 128 MB';
      }
      
      if(empty($errors) == true) {
         move_uploaded_file($file_tmp,"upload/".$file_name);
         chmod("upload/".$file_name, 0755);
         echo "Success";
      } else {
         print_r($errors);
      }
   }
   
   ?>
   
</body>
</html>

				
			

Web je vytvářen s pečlivostí k obsaženým informacím. Snažím se poskytovat kvalitní a užitečný obsah, který ostatním pomáhá, nebo je inspiruje. Pokud jste spokojeni s mou prací a chtěli byste mě podpořit, můžete to udělat prostřednictvím jednoduchých možností.

Byl pro Vás tento článek užitečný?

Klikni na počet hvězd pro hlasování.

Průměrné hodnocení. 0 / 5. Počet hlasování: 0

Zatím nehodnoceno! Buďte první

Jak užitečný vidíte tento článek.

Sledujte mě na sociálních médiích.

Je mi líto, že pro Vás nebyl článek užitečný.

Jak mohu vylepšit článek?

Řekněte mi, jak jej mohu zlepšit.

newsletter

Odebírejte Newsletter

Buďte v obraze! Připojte se k odběru newsletteru a buďte první, kdo získá nejnovější informace přímo do vaší e-mailové schránky. Sledujte aktuality, exkluzivní události a inspirativní obsah, přímo na Vašem e-mailu.  

Odebírat
Upozornit na
guest
0 Komentáře/ů
Vložené zpětné vazby.
Zobrazit všechny komentáře.

Pokud mi chcete napsat rychlou zprávu, využije, prosím, níže uvedený
kontaktní formulář. Děkuji.

Další Kontaktní údaje