Codice PHP:
<?php
include("config.inc.php");
$upload_dir = '/-form2/';
$file_name = "";
// non ho capito questa parte di codice
// o lasci il nome originale del file oppure????
if(!isset($_FILES['upload']['name']) OR !empty($_FILES['upload']['error'])) {
// significato di questo IF
// se il file non è stato uploadato opppure se ci sono errori
echo "
Non hai indicato il file da uploadare!
<a href=\"javascript:history.back()\">Indietro</a>
";
} else {
move_uploaded_file($_FILES['upload']['tmp_name'], "$upload_dir/$file_name")
or die("Impossibile spostare il file, controlla l'esistenza o i permessi della directory dove fare l'upload.");
}
echo "L'upload del file " . $_FILES['upload']['name'] . " è avvenuto correttamente";
?>
Come puoi notare ho fatto una serie di cose.
La prima: ho tolto il trim dal controllo su $_FILES[nome] perché pur provenendo da una form, non stai trattando una stringa, ma un file, cui è associato un nome in formato stringa, ma non è una variabile, bensì una parte in un array.
La seconda: ho modificato la sintassi del metodo che usi per accedere ad un array, in quanto si deve usare la parentesi quadra e l'apice singolo.
La terza: ho tolto la chiocciolina da move_eccetera. Sei in fase di sviluppo per cui non negarti l'aiuto dei messaggi di errore: sono fondamentali per capire dove si sta andando... al momento di rendere pubblica la tua applicazione rimetterai le chioccioline.
La quarta: if (condizione) {die("xxx");} non l'ho mai vista come sintassi. Credo proprio che il DIE non si possa usare così!!!!
Ad ogni modo, poco fa - girovagando per le guide di questo sito - ho visto che c'è proprio una lezione di esempio su come fare un upload di un FILE.
Eccoti il LINK.
Infine, $_POST va usato per recuperare tutte le variabili passate con il metodo POST.
$_GET va usato per recuperare tutte le variabili passate con il metodo GET.
$_COOKIE va usato per recuperare tutte le variabili passate con il metodo dei cookies.
$_FILES va usato per recuperare tutte le variabili passate durante l'upload di un file da form, a prescindere che questa abbia il metodo POST.
$_REQUEST, invece, va a fare un calderone di tutte le variabili di cui sopra messe insieme. A prescindere che se hai in un cookie una variabile con lo stesso nome di una passata con altro metodo, non so come si possa comportare, ma so che gli script che sfruttano REQUEST sono più facilmente preda di attacchi informatici.
Se sei accorto nel sostituire $_REQUEST con il giusto corrispettivo non dovresti avere problemi.