Esercitazione PHP

PHP HOME Introduzione a PHP Installazione PHP Sintassi PHP Commenti PHP Variabili PHP PHP Eco/Stampa Tipi di dati PHP Stringhe PHP Numeri PHP PHP matematica Costanti PHP Operatori PHP PHP Se...Altro...Altro Passaggio PHP Ciclo PHP Funzioni PHP Array PHP Superglobali PHP RegEx PHP

Moduli PHP

Gestione dei moduli PHP Convalida del modulo PHP Modulo PHP richiesto URL/e-mail del modulo PHP Modulo PHP completo

PHP avanzato

Data e ora PHP PHP Include Gestione dei file PHP Apri/Leggi file PHP Creazione/scrittura di file PHP Caricamento file PHP Cookie PHP Sessioni PHP Filtri PHP Filtri PHP avanzati Funzioni di callback PHP PHP JSON Eccezioni PHP

PHP OOP

PHP Che cos'è OOP Classi/Oggetti PHP Costruttore PHP PHP distruttore Modificatori di accesso PHP Ereditarietà PHP Costanti PHP Classi astratte PHP Interfacce PHP Tratti PHP Metodi statici PHP Proprietà statiche PHP Spazi dei nomi PHP Iterabili PHP

Database MySQL

Database MySQL MySQL Connect MySQL Crea DB MySQL Crea tabella Dati di inserimento MySQL MySQL Ottieni l'ultimo ID MySQL inserisce più MySQL preparato MySQL Seleziona dati MySQL dove MySQL Ordina per MySQL Elimina dati Dati di aggiornamento MySQL Dati limite MySQL

PHP XML

Parser XML PHP Analizzatore PHP SimpleXML PHP SimpleXML - Ottieni PHP XML espatriato PHP XML DOM

PHP - AJAX

Introduzione all'Ajax AJAX PHP Database AJAX XML AJAX Ricerca in tempo reale AJAX Sondaggio AJAX

Esempi PHP

Esempi PHP compilatore PHP Quiz PHP Esercizi PHP Certificato PHP

Riferimento PHP

Panoramica di PHP matrice PHP Calendario PHP Data PHP Directory PHP Errore PHP Eccezione PHP File system PHP Filtro PHP PHP FTP PHP JSON Parole chiave PHP PHP Libxml Posta PHP PHP matematica PHP Varie PHP MySQLi Rete PHP Controllo dell'output PHP RegEx PHP PHP SimpleXML Flusso PHP Stringa PHP Gestione delle variabili PHP Analizzatore XML PHP Zip PHP Fuso orario PHP

Caricamento file PHP


Con PHP, è facile caricare file sul server.

Tuttavia, con facilità arriva il pericolo, quindi fai sempre attenzione quando consenti il ​​caricamento di file!


Configura il file "php.ini".

Innanzitutto, assicurati che PHP sia configurato per consentire il caricamento di file.

Nel tuo file "php.ini", cerca la file_uploadsdirettiva e impostala su On:

file_uploads = On

Crea il modulo HTML

Successivamente, crea un modulo HTML che consenta agli utenti di scegliere il file immagine che desiderano caricare:

<!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>

Alcune regole da seguire per il modulo HTML sopra:

  • Assicurati che il modulo utilizzi method="post"
  • Il modulo necessita anche del seguente attributo: enctype="multipart/form-data". Specifica quale tipo di contenuto utilizzare durante l'invio del modulo

Senza i requisiti di cui sopra, il caricamento del file non funzionerà.

Altre cose da notare:

  • L'attributo type="file" del tag <input> mostra il campo di input come controllo di selezione file, con un pulsante "Sfoglia" accanto al controllo di input

Il modulo sopra invia i dati a un file chiamato "upload.php", che creeremo di seguito.



Crea lo script PHP del file di caricamento

Il file "upload.php" contiene il codice per caricare un file:

<?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;
  }
}
?>

Spiegazione dello script PHP:

  • $target_dir = "uploads/" - specifica la directory in cui verrà posizionato il file
  • $target_file specifica il percorso del file da caricare
  • $uploadOk=1 non è ancora utilizzato (sarà utilizzato in seguito)
  • $imageFileType contiene l'estensione del file (in minuscolo)
  • Quindi, controlla se il file immagine è un'immagine reale o un'immagine falsa

Nota: dovrai creare una nuova directory chiamata "uploads" nella directory in cui risiede il file "upload.php". I file caricati verranno salvati lì.


Controlla se il file esiste già

Ora possiamo aggiungere alcune restrizioni.

Innanzitutto, verificheremo se il file esiste già nella cartella "caricamenti". In tal caso, viene visualizzato un messaggio di errore e $uploadOk è impostato su 0:

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

Limita la dimensione del file

Il campo di input del file nel nostro modulo HTML sopra è denominato "fileToUpload".

Ora, vogliamo controllare la dimensione del file. Se il file è più grande di 500 KB, viene visualizzato un messaggio di errore e $uploadOk è impostato su 0:

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

Limita il tipo di file

Il codice seguente consente agli utenti di caricare solo file JPG, JPEG, PNG e GIF. Tutti gli altri tipi di file danno un messaggio di errore prima di impostare $uploadOk su 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;
}

Completa il caricamento dello script PHP del file

Il file "upload.php" completo ora si presenta così:

<?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.";
  }
}
?>

Riferimento completo al file system PHP

Per un riferimento completo delle funzioni del filesystem, vai al nostro riferimento completo al filesystem PHP .