Tento skript umožňuje uživatelům nahrávat soubory na server. Kontroluje, zda je nahrávaný soubor obrázek, zda již neexistuje soubor se stejným názvem a zda nahrávaný soubor není příliš velký. Přijímá pouze obrázky ve formátu JPG, JPEG, PNG nebo GIF.
<!DOCTYPE html>
<html>
<body>
<form action="upload.php" method="post" enctype="multipart/form-data">
Vyberte soubor k nahrání:
<input type="file" name="fileToUpload" id="fileToUpload">
<input type="submit" value="Nahrát soubor" name="submit">
</form>
</body>
</html>
Následný skript upload.php
by mohl vypadat následovně:
<?php
$target_dir = "uploads/";
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
$uploadOk = 1;
$imageFileType = strtolower(pathinfo($target_file,PATHINFO_EXTENSION));
// Kontrolujeme, jestli je soubor obrázek
if(isset($_POST["submit"])) {
$check = getimagesize($_FILES["fileToUpload"]["tmp_name"]);
if($check !== false) {
echo "Soubor je obrázek - " . $check["mime"] . ".";
$uploadOk = 1;
} else {
echo "Soubor není obrázek.";
$uploadOk = 0;
}
}
// Kontrolujeme, jestli soubor již existuje
if (file_exists($target_file)) {
echo "Omlouváme se, soubor již existuje.";
$uploadOk = 0;
}
// Kontrolujeme velikost souboru
if ($_FILES["fileToUpload"]["size"] > 500000) {
echo "Omlouváme se, váš soubor je příliš velký.";
$uploadOk = 0;
}
// Povolíme pouze určité formáty obrázků
if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"
&& $imageFileType != "gif" ) {
echo "Omlouváme se, jsou povoleny pouze soubory JPG, JPEG, PNG & GIF.";
$uploadOk = 0;
}
// Kontrolujeme, jestli bylo nahrávání úspěšné
if ($uploadOk == 0) {
echo "Omlouváme se, váš soubor nebyl nahrán.";
} else {
if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
echo "Soubor ". basename( $_FILES["fileToUpload"]["name"]). " byl úspěšně nahrán.";
} else {
echo "Omlouváme se, nastala chyba při nahrávání vašeho souboru.";
}
}
?>
Pozor, tento skript je velmi jednoduchý a slouží pouze k demonstraci. Skutečný nahrávací skript by měl obsahovat daleko více kontrol a bezpečnostních opatření. Například:
Validace dat: Kromě kontroly velikosti souboru a typu souboru by měl být skript schopen zkontrolovat, zda soubor neobsahuje potenciálně škodlivý obsah.
Omezení přístupu: Skript by měl zajistit, že soubory mohou nahrávat pouze oprávnění uživatelé. To může zahrnovat přihlašovací proces a kontrolu oprávnění.
Manipulace s nahrávanými soubory: Skript by měl obsahovat logiku pro manipulaci s nahrávanými soubory, například pro změnu velikosti obrázků nebo konverzi formátů souborů.
Chybové zprávy: Skript by měl informovat uživatele o potížích při nahrávání souborů pomocí jasných a uživatelsky přívětivých chybových zpráv.
Bezpečnost: Bezpečnost je vždy nezbytná, když se pracuje s nahráváním souborů. Skript by měl zahrnovat opatření pro ochranu proti útokům, jako je například útok typu “File Upload Vulnerability”.
Jedná se o velmi základní skript a neobsahuje žádnou validaci dat nebo kontrolu chyb, takže jej v reálném světě pravděpodobně nebudete chtít používat bez dalších úprav. Je také důležité si uvědomit, že nahrávání souborů na server může představovat bezpečnostní riziko, pokud není řádně zabezpečeno.