Tag Archive for 'count'

Rinominare un file in upload

Quella di rinominare un file in upload è una cosa che può essere molto utile fondamentalmente per 2 motivi:

  1. evitare di sovrascrivere file esistenti che hanno lo stesso nome
  2. evitare errori di upload dovuti a caratteri strani presenti nel nome del file

io uso un metodo molto semplice, in fase di upload, rilevo l'estensione del file con questa mia funzione, e le antepongo un nome univoco, utilizzando la funzione uniqid(pref).
Tale funzione oltre che restituire una stringa univoca permette si assegnare una sorta di prefisso, utile per identificare ad esempio i file di diverse sezioni di un sito (es. home_474ab038b3bbe.jpg)
Quindi, il solito form invierà il file da uplodare a upload.php

PHP:
  1. <form method="post" action="upload.php" enctype="multipart/form-data">
  2.     <input type="file" name="file_da_uplodare">
  3.     <input type="submit" value="Invia">
  4. </form>

... a seguire il file upload.php nel quale includo anche la funzione per rinominare il file, riceverà il file, lo rinominerà e lo uploderà.

PHP:
  1. <?php
  2.  
  3. function estensione($nome){
  4.     $trova_punto = explode(".", $nome);
  5.     $estensione = $trova_punto[count($trova_punto) - 1];
  6.     $estensione = strtolower($estensione);
  7.     if (isset($trova_punto[1]) == FALSE){
  8.         return "Nessuna estensione";
  9.     }
  10.     return $estensione;
  11. }
  12.  
  13. // directory dove va uplodato il file
  14. $directory = 'directoryupload/';
  15.  
  16. // verifica l'esistenza del file
  17. if (isset($_FILES['file_da_uplodare'])) {
  18.     $file_temporaneo= $_FILES['file_da_uplodare']['tmp_name'];
  19.     $nome_file = $_FILES['file_da_uplodare']['name'];
  20.  
  21.         // trova l'estensione del file
  22.         $estensione_file=estensione($nome_file);
  23.         // assegna un nome univooco al file
  24.         $nome_file=uniqid(file_).".".$estensione_file;
  25.  
  26.         //esegue l'upload e controlla che vada a buon fine
  27.     if (move_uploaded_file($file_temporaneo, $directory  . $nome_file)){
  28.         echo "Il file è stato caricato";
  29.     } else {
  30.         echo "Si è verificato un errore durante l'upload";
  31.     }
  32. }
  33. ?>

Estensione di un nome di file

Può essere utile ricavare l'estensione dal nome di un file di cui ad esempio si è fatto l'upload e lo si vuole rinominare con un nome univoco. Chiaramente l'estensione in questo caso non va cambiata, è quindi necessario estrappolarla dal nome del file e conservala.
Ecco una funzione che può essere di aiuto in questo senso.

PHP:
  1. function estensione($nome){
  2.     $trova_punto = explode(".", $nome);
  3.     $estensione = $trova_punto[count($trova_punto) - 1];
  4.     $estensione = strtolower($estensione);
  5.     if (isset($trova_punto[1]) == FALSE){
  6.         return "Nessuna estensione";
  7.     }
  8.     return $estensione;
  9. }
  10. $file="pippo.jpg";
  11. echo estensione($file); /// restituisce jpg

Recuperare valori da un Array

Un Array è una sorta di variabile che contiene più valori (facendola facile). Un metodo comodo per recuperare i valori di un Array è utilizzare un cliclo for come nell'esempio qui sotto.
La funzione count permette di contare gli elementi dell'array e quindi impostare il ciclo.

PHP:
  1. $stati = array('italia', 'francia', 'spagna', 'olanda', 'belgio');
  2.  
  3. $numero_stati = count($stati);
  4.  
  5. for ($contatore=0; $counter<=$numero_stati; $contatore++) {
  6.     echo $stati[$contatore] . "<br>";
  7. }

Quello che restituisce il ciclo for è l'equivalente di

PHP:
  1. echo $stati[0] . "<br>";
  2. echo $stati[1] . "<br>";
  3. echo $stati[2] . "<br>";
  4. echo $stati[3] . "<br>";
  5. echo $stati[4] . "<br>";

Ovviamente il ciclo for e la funzione count permettono di lavorare su Array dei quali non si conosce a prescindere il numero degli elementi.