Výukový program PHP

PHP HOME Úvod do PHP Instalace PHP Syntaxe PHP Komentáře PHP PHP proměnné PHP Echo / tisk Datové typy PHP PHP řetězce PHP čísla PHP matematika Konstanty PHP Operátoři PHP PHP If...Else...Elseif Přepínač PHP PHP smyčky Funkce PHP Pole PHP PHP Superglobals PHP RegEx

Formuláře PHP

Manipulace s formuláři PHP Ověření formuláře PHP Je vyžadován formulář PHP Adresa URL / e-mail PHP formuláře Formulář PHP dokončen

PHP pro pokročilé

Datum a čas PHP Zahrnout PHP Práce se soubory PHP PHP soubor otevřít/číst Vytvoření/zápis souboru PHP Nahrání souboru PHP PHP soubory cookie PHP relace PHP filtry Pokročilé filtry PHP Funkce zpětného volání PHP PHP JSON Výjimky PHP

PHP OOP

PHP Co je OOP PHP třídy/objekty PHP konstruktor PHP destruktor Modifikátory přístupu PHP Dědičnost PHP Konstanty PHP Abstraktní třídy PHP Rozhraní PHP Vlastnosti PHP Statické metody PHP Statické vlastnosti PHP Jmenné prostory PHP PHP Iterables

Databáze MySQL

Databáze MySQL Připojení MySQL MySQL Vytvořte DB Vytvořit tabulku MySQL Vložit data MySQL MySQL Get Last ID MySQL Insert Multiple MySQL připraveno MySQL Select Data Kde MySQL Pořadí MySQL podle Vymazání dat MySQL Aktualizace dat MySQL Limit dat MySQL

PHP XML

PHP analyzátory XML PHP SimpleXML Parser PHP SimpleXML - Získejte PHP XML expat PHP XML DOM

PHP - AJAX

Úvod do AJAXu AJAX PHP Databáze AJAX AJAX XML AJAX Live Search Anketa AJAX

Příklady PHP

Příklady PHP PHP kompilátor PHP kvíz Cvičení PHP Certifikát PHP

Reference PHP

Přehled PHP Pole PHP Kalendář PHP Datum PHP Adresář PHP Chyba PHP Výjimka PHP Souborový systém PHP PHP filtr PHP FTP PHP JSON Klíčová slova PHP PHP Libxml PHP Mail PHP matematika PHP Různé PHP MySQLi Síť PHP Ovládání výstupu PHP PHP RegEx PHP SimpleXML PHP stream PHP řetězec PHP Variable Handling PHP XML Parser PHP zip Časová pásma PHP

Nahrání souboru PHP


S PHP je snadné nahrávat soubory na server.

S lehkostí však přichází nebezpečí, takže při povolování nahrávání souborů buďte vždy opatrní!


Nakonfigurujte soubor "php.ini".

Nejprve se ujistěte, že je PHP nakonfigurováno tak, aby umožňovalo nahrávání souborů.

V souboru „php.ini“ vyhledejte file_uploadsdirektivu a nastavte ji na On:

file_uploads = On

Vytvořte formulář HTML

Dále vytvořte formulář HTML, který uživatelům umožní vybrat soubor obrázku, který chtějí nahrát:

<!DOCTYPE html>
<html>
<body>

<form action="upload.php" method="post" enctype="multipart/form-data">
  Select image to upload:
  <input type="file" name="fileToUpload" id="fileToUpload">
  <input type="submit" value="Upload Image" name="submit">
</form>

</body>
</html>

Některá pravidla pro výše uvedený HTML formulář:

  • Ujistěte se, že formulář používá metodu = "post"
  • Formulář také potřebuje následující atribut: enctype="multipart/form-data". Určuje, jaký typ obsahu použít při odesílání formuláře

Bez výše uvedených požadavků nebude nahrávání souboru fungovat.

Další věci, kterých si všimnout:

  • Atribut type="file" tagu <input> zobrazuje vstupní pole jako ovládací prvek pro výběr souboru s tlačítkem "Procházet" vedle ovládacího prvku vstupu

Výše uvedený formulář odešle data do souboru s názvem "upload.php", který vytvoříme jako další.



Vytvořte skript PHP pro nahrání souboru

Soubor "upload.php" obsahuje kód pro nahrání souboru:

<?php
$target_dir = "uploads/";
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
$uploadOk = 1;
$imageFileType = strtolower(pathinfo($target_file,PATHINFO_EXTENSION));
// Check if image file is a actual image or fake image
if(isset($_POST["submit"])) {
  $check = getimagesize($_FILES["fileToUpload"]["tmp_name"]);
  if($check !== false) {
    echo "File is an image - " . $check["mime"] . ".";
    $uploadOk = 1;
  } else {
    echo "File is not an image.";
    $uploadOk = 0;
  }
}
?>

Vysvětlení PHP skriptu:

  • $target_dir = "uploads/" - určuje adresář, kam bude soubor umístěn
  • $target_file určuje cestu k souboru, který má být nahrán
  • $uploadOk=1 se zatím nepoužívá (bude použito později)
  • $imageFileType obsahuje příponu souboru (malá písmena)
  • Dále zkontrolujte, zda je soubor obrázku skutečný obrázek nebo falešný obrázek

Poznámka: Budete muset vytvořit nový adresář s názvem "uploads" v adresáři, kde se nachází soubor "upload.php". Nahrané soubory se tam uloží.


Zkontrolujte, zda soubor již existuje

Nyní můžeme přidat některá omezení.

Nejprve zkontrolujeme, zda soubor již existuje ve složce „uploads“. Pokud ano, zobrazí se chybová zpráva a $uploadOk je nastaveno na 0:

// Check if file already exists
if (file_exists($target_file)) {
  echo "Sorry, file already exists.";
  $uploadOk = 0;
}

Omezit velikost souboru

Pole pro zadání souboru v našem HTML formuláři výše se jmenuje „fileToUpload“.

Nyní chceme zkontrolovat velikost souboru. Pokud je soubor větší než 500 kB, zobrazí se chybová zpráva a $uploadOk je nastaveno na 0:

// Check file size
if ($_FILES["fileToUpload"]["size"] > 500000) {
  echo "Sorry, your file is too large.";
  $uploadOk = 0;
}

Omezit typ souboru

Níže uvedený kód umožňuje uživatelům nahrávat pouze soubory JPG, JPEG, PNG a GIF. Všechny ostatní typy souborů zobrazí chybovou zprávu před nastavením $uploadOk na 0:

// Allow certain file formats
if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"
&& $imageFileType != "gif" ) {
  echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed.";
  $uploadOk = 0;
}

Kompletní nahrání souboru PHP skript

Kompletní soubor "upload.php" nyní vypadá takto:

<?php
$target_dir = "uploads/";
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
$uploadOk = 1;
$imageFileType = strtolower(pathinfo($target_file,PATHINFO_EXTENSION));

// Check if image file is a actual image or fake image
if(isset($_POST["submit"])) {
  $check = getimagesize($_FILES["fileToUpload"]["tmp_name"]);
  if($check !== false) {
    echo "File is an image - " . $check["mime"] . ".";
    $uploadOk = 1;
  } else {
    echo "File is not an image.";
    $uploadOk = 0;
  }
}

// Check if file already exists
if (file_exists($target_file)) {
  echo "Sorry, file already exists.";
  $uploadOk = 0;
}

// Check file size
if ($_FILES["fileToUpload"]["size"] > 500000) {
  echo "Sorry, your file is too large.";
  $uploadOk = 0;
}

// Allow certain file formats
if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"
&& $imageFileType != "gif" ) {
  echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed.";
  $uploadOk = 0;
}

// Check if $uploadOk is set to 0 by an error
if ($uploadOk == 0) {
  echo "Sorry, your file was not uploaded.";
// if everything is ok, try to upload file
} else {
  if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
    echo "The file ". htmlspecialchars( basename( $_FILES["fileToUpload"]["name"])). " has been uploaded.";
  } else {
    echo "Sorry, there was an error uploading your file.";
  }
}
?>

Kompletní reference souborového systému PHP

Úplnou referenci o funkcích souborového systému naleznete v naší úplné příručce souborového systému PHP .