sebbene in linea di base la prog OOP sia superiore alla procedurale in alcuni casi è dispendiosa, come ad esempio quando bisogna creare script relativamente semplici e lineari. Questo è uno di quei casi, poi valuta tu secondo i tuoi gusti.
Cmq, per uplodare file via web in primis va creato il form, suponiamo che sia
<form enctype="multipart/form-data" action="pagina.php" method="post">
<input name="userfile" type="file">
<input type="submit" value="Invia File">
</form>
Ora ecco le variabili che ti saranno utili (array $_FILES['nomeform'])
$_FILES['userfile']['name'] -> Il nome originale del file sul pc dell'utente.
$_FILES['userfile']['type'] -> Il mime-type del file, se il browser fornisce questa informazione. Un esempio potrebbe essere "image/gif".
$_FILES['userfile']['size'] -> La dimensione, in bytes, del file caricato.
$_FILES['userfile']['tmp_name'] Il nome del file temporaneo in cui il file caricato è salvato sul server.
$_FILES['userfile']['error'] il codice d'errore, in caso che la versione di php sia 4.2.0 o superiore.
Esempio di script per catalogare le immagini in base al tipo:
if ($_FILES['userfile']['error']!=0) {echo"Si è verificato un errore, torna iindietro e riprova";die;}
// definiizione del tipo del file
$t=$_FILES['userfile']['type']
switch($t) {
case "image/gif":{$dir="gif";break;}
case "image/jpeg":{$dir="jpeg";break;}
default:$dir="other";
}
//definizione del nome del file img+10 num a caso + estensione
function creanome() {
$nome="img";
$i=0;while($i<11) {
$h=mt_rand(0,9);
$nome.=$h;
$i++;
}
$nome.=".".$dir;
$k="/".$dir.$nome;
if (file_exists($k)) creanome();
}
// in fondo c'è il controllo se il nome esiste. In quelcaso ne trova un altro, ecco perche l'uso di una funzione.
//spostamente del file nella locazione desiderata. Rikorda di usare percorsi relativi, cioè, se devi scendere di una dir usa il ".." oppure parti dalla radice MA del sito. (il file index.html di www.sito.com/index.html è in radice)
move_uploaded_file ($_FILES['userfile']['tmp_name'] , "/$dir.$name");
oppure se vuoi mantenere il nome originale..
move_uploaded_file ($_FILES['userfile']['tmp_name'] , $_FILES['userfile']['name']);
Ricordati che se non vuoiche nessun altro oltre te, o una cerchia ristretta di persone possa uplodare file è necessario proteggere la pagina. Questo puo essere fatto tramite una semplice autenticazione in php. Va inserita nella pagina dello script Php e non nella pagina dove ce il form, altrimenti potrebbe essere scavalcata.
Ovviamente va prima di tutto perchè si tratta di un header
<?php
$user="pippo";
$psw="topo";
if (!isset($_SERVER['PHP_AUTH_USER'])) {
header('WWW-Authenticate: Basic realm="Il mio realm"');
header('HTTP/1.0 401 Unauthorized');
echo 'Messaggio da inviare se si preme il tasto Cancel';
exit;
} else {
if ($_SERVER['PHP_AUTH_USER']!=$user && $_SERVER['PHP_AUTH_PW']!=$psw) { echo "Sbagliato! Caro signore $_SERVER['REMOTE_ADDR'] questa è un'area riservata! ";die();}
}
?>
Poi divertiti come piu ti piace, o secondo le tue esigenze....
ciao e buon lavoro!

Rispondi quotando