Ciao benvenuto noncecapisco.
Codice PHP:
<?php
error_reporting(PHP_INT_MAX); // Attivo le costanti E_WARNING, E_NOTICE e tutto, per debug è utile visualizzare gli errori
$filename = 'dati.txt';
$handle = fopen($filename, 'a');
if(isset($_POST['submit'], $_POST['dati'], $_POST['nome'])){
fwrite ($handle,$_POST['dati']);
fwrite($handle, "\r\n");
$temp = explode('.', $_FILES['file']['name']);
move_uploaded_file($_FILES['file']['tmp_name'], '/membri/noncecapisco/upload/'.rand(1, 100000000).'-'.$_POST['nome'].'.'.end($temp));
header('Location: upload');
}
?>
1) Dal tuo form è presente l'attributo action che è la url in ricezione dei dati,
2) La ricezione dei dati è un file php, il suo uso migliore è se scritto solo per tale scopo (ricezione dati post).
Si, sebbene l'inoltro dei file è con Enctype diverso da application/x-www-form-urlencoded anche la variabile $_POST è valorizzata da input type text oltre i file di input type file.
Con error_reporting ho abilitato ogni errore e siccome su altervista display_errors è abilitato puoi leggere su schermo, ho aggiunto la root /membri/noncecapisco/ del tuo account altervista nel tuo percorso target/destinazione per il file, probabilmente senza l'aggiunta della tua root c'è l'errore.. provalo senza root e poi dopo con la root.
Ho anche aggiunto la verifica se esiste/definito $_POST['submit'], $_POST['dati'] e $_POST['nome'] tramite la funzione isset dentro la condizione if.
Questo nel gergo HTTP è reindirizzamento verso la destinazione upload
Codice PHP:
header('Location: upload');
Siccome il web server Apache fornito da altervista è configurato a mostrare index.html o index.htm o index.php è equivalente a Location: upload (cioè la sintassi mostrata precedentemente o sintassi alternativa upload/index.php), se invece il codice dell'autore prevede il directory listing qui per ovvie ragioni di sicurezza non è possibile.