Messaggio ven ago 07, 2009 2:00 pm

[PHP DA ZERO - LEZIONE 9]Funzioni: Parte 3 e $_FILES

Con php è possibile creare file,
eliminarli, modificarli, creare cartelle, eliminare files da cartelle e tante altre cose.


Ecco a voi la lista delle principali funzioni(ed esempi di utilizzi) per la gestione dei files.

fopen($filedaaprire, $mode); ( Apre un file )

fread($filedaleggere); ( Legge un file )

unlink($daeliminare); (Elimina un file )

file_exists($dacontrollare); ( Controlla se un file esiste)

is_writable($dacontrollare) (Controlla se un file è rescrivibile)

is_readable($dacontrollare) (Controlla se un file è leggibile)

is_file($dacontrollare); ( Ha la stesso uso di file_exists, controlla se è un file è un file, cioè se esiste)

fwrite ($testodascrivere, $fileincuiscrivere); (Scrive un file, eliminando pero' il vecchio contenuto )

file_get_contents ( Legge un file, si puo' usare al posto di fread, ma non ha bisogno di mettere fopen prima(a differenza di fread))

fputs ( Identico a fwrite)

fclose($filedachiudere) ( Chiude un file )

Iniziamo considerando fread(oltre che fclose e fopen)


Premettiamo una cosa.

Come avrete notato fopen ha il parametro $mode. Di solito si riempie w+ ( Quindi la funzione si usa cosi': fopen("file.txt", "w+"); ).

Quel parametro sta ad indicare la modalità di apertura file.
- Scrivendo w+ potrete sia leggere che scrivere il file
- Scrivendo w potrete solo scriverlo
- Scrivendo r potrete solo leggerlo

Ma andiamo al sodo.

Usando fread ( e fopen, fclose ) possiamo leggere il contenuto di un file di testo(php, txt, html) con php.

Ecco il codice:
  Codice:
<?php

$fp = fopen("nomefile.txt", "w"); //Per prima cosa apriamo il file, scrivendo come modalità "w", in modo da poter leggerlo

$contenuto_file = fread($fp); //Dopodichè "leggiamo" il file e diamo alla variabile $contenuto_file come valore il risultato della funzione fread

fclose($fp); //Chiudiamo il file, serve più che altro per motivi di sicurezza.

?>



Adesso consideriamo la funzione unlink e la funzione file_exists.

  Codice:
<?php

if (file_exists("pagina.html")){ //Se il file pagina.html esiste
unlink("pagina.html"); //Elimino il file pagina. html
} else { //Altrimenti
echo "Il file non esiste!";
}
?>


Adesso parliamo di fwrite.

Con questa funzione è possibile scrivere un file, eliminando però il vecchio contenuto.

  Codice:
<?php

$fp = fopen("nomefile.txt", "w+"); //Per prima cosa apriamo il file, scrivendo come modalità "w", in modo da poterlo sia leggerlo che scriverlo

fwrite($fp, "Ciao");

fclose($fp); //Chiudiamo il file, serve più che altro per motivi di sicurezza.


?>


Adesso parliamo della variabile predefinita $_FILES.

A cosa serve?

Semplice.

Per gestire i files provenienti da un form.

In parole povere: serve per fare un sistema di upload.

In un sistema di upload gli elementi fondamentali sono i seguenti:

- Form html con campo file e enctype multipart/form-data

- Funzione move_uploaded_file

- Variabile $_FILES

$_FILES['nomecampofile']['name']; //Mostra il nome "vero" del file caricato dall'utente con tanto di estensione

$_FILES['nomecampofile']['tmp_name']; //Mostra il nome temporaneo del file caricato dall'utente

$_FILES['nomecampofile']['type']; //Mostra il tipo di file caricato

In pratica(Ecco un codice completo per l'upload):

  Codice:
<?php

echo "<form action='pagina.php'  enctype='multipart/form-data' method='post'>";
echo "<input type='file' name='upload'/>";
echo "<input type='submit' name='carica' value='Carica File'/>";
echo "</form>";

if ($_POST['carica']){

//Se il tipo di file è un'immagine jpg o una gif o una png
if (($_FILES['type'] == "image/jpeg") or ($_FILES['type'] == "image/gif") or ($_FILES['type'] == "image/png"))
{
move_uploaded_file($_FILES['file']['tmp_name'], $_FILES['file']['name']);
//Con questa funzione il file verrà caricato dal computer dell'utente allo spazio web.
} else { //Altrimenti
echo "Estensione non consentita";
}
}

?>


Nella prossima lezione parleremo del ciclo while e chiuderemo il capitolo della gestione dei files parlando delle funzioni per eseguire operazioni sulle cartelle e parlando di operazioni complesse con i files.