Valutazione discussione:
  • 0 voto(i) - 0 media
  • 1
  • 2
  • 3
  • 4
  • 5
Informazione su form di invio file
#1
Question 
Ciao a tutti, ho creato cercando qua e la un form per inviare dei file, in particolare mi servirebbe solo per inviare delle normali immagini di fumetti creati dai miei utenti per un mio progetto (nuova sezione al mio sito).

Ok, il form funziona tutto ok, in pratica fa inserire descrizione del file e la parte di upload (sfoglia, per caricare i file).

Io vorrei che l'immagine inviata prenda il nome del file della descrizione, in questo modo se il file è già esistente sul mio spazio mi viene meglio a gestire il tutto facendo un controllo con questo codice:

Codice PHP:
$nuovo_nome=$percorso.$ultimo_id.".jpg";
//nuovo nome dell'immagine
$inviato=file_exists($file_temp);
//verifica se il file è stato caricato sul server

if ($inviato) {

    echo(
"File già esistente, cambiare nome prego.");
    
// Già esistente

    


Inoltre vorrei che se il file fosse già esistente che venisse automaticamente modificato il nome, magari aggiungendo un numero.

Altra cosa, vorrei che mi fosse inviata una e-mail appena viene allegato il file.

E per ultimo vorrei un controllo in modo che i file inviati siano solo ed esclusivamente immagine nelle estensioni più conosciute come: jpg, gif...
in modo che non vengano inviati virus o file che danneggerebbero il sito.

Il codice già creato del file che gestisci gli upload è il seguente:
Codice PHP:
<?php
// Nelle versioni di PHP precedenti alla 4.1.0 si deve utilizzare  $HTTP_POST_FILES anzichè 
// $_FILES.
$uploaddir 'upload/';
$uploadfile $uploaddir basename($_FILES['userfile']['name']);

//Di seguito l'aggiunta:
$nuovo_nome=$percorso.$ultimo_id.".jpg";
//nuovo nome dell'immagine
$inviato=file_exists($file_temp);
//verifica se il file è stato caricato sul server

if ($inviato) {

    echo(
"File già esistente, cambiare nome prego.");
    
// Già esistente

    
}

echo 
"<pre>";
if (
move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
    echo 
"File inviato correttamente.\n";
} else {
    echo 
"Possibile attacco tramite file upload!\n"
}
echo 
'Alcune infromazioni di debug:';
print_r($_FILES); 

print 
"</pre>";

?>

Se vi servono altra info io sono qui. Big Grin
Cita messaggio
#2
Ho creato questo script molto velocemente e senza provarlo, quindi potrebbero esserci degli errori:
Codice PHP:
<?php
$estensioni 
= array('jpg','jpeg','png','gif'); // Elenco delle estensioni dei file che si possono caricare
$uploaddir 'upload/'// Percorso della cartella in cui caricare i file
$to 'pippo@pippo.it'// Indirizzo e-mail a cui spedire la notifica del caricamento del file
$err = array();
$descrizione trim(str_replace('/',' ',$_POST['descrizione']));
if(
$descrizione=='')
    
$err[] = 'Devi inserire la descrizione.';
$ext strtolower(substr(strrchr($_FILES['userfile']['name'],'.'),1));
$counter count($estensioni);
$ok false
for($i=0;$i<$counter;$i++)
    if(
$ext==strtolower($estensioni[$i])){
        
$ok true;
        break;
    }
if(!
$ok){
    
$err[] = 'Il file ha un\'estensione non valida.';
}
if(empty(
$err)){
    
$i '';
    while(
file_exists($uploaddir.$descrizione.$i.'.'.$ext))
        if(!
is_int($i))
            
$i 2;
        else
            
$i++;
    
$uploadfile $uploaddir.$descrizione.$i.'.'.$ext;
    if(!
move_uploaded_file($_FILES['userfile']['tmp_name'],$uploadfile))
        
$err[] = 'C\'&egrave; stato un problema nel caricamento del file.';
}
if(empty(
$err)){
    
mail($to,'File caricato','&Egrave; stato caricato il file '.$descrizione.$i.'.'.$ext);
    echo 
'<p>File caricato correttamente.</p>';
} else {
    echo 
'<ul>';
    
$counter count($err);
    for(
$i=0;$i<$counter;$i++)
        echo 
'<li>'.$err[$i].'</li>';
    echo 
'</ul>';
}
?>
Mattia!
Cita messaggio
#3
Mi da il seguente errore:

Codice:
Parse error: syntax error, unexpected T_FOR in /home/mhd-01/www.cimuvi.org/htdocs/upload.php on line 12
Cita messaggio
#4
Al posto di:
Codice PHP:
$ok false 

Metti:
Codice PHP:
$ok false
Mattia!
Cita messaggio
#5
Perfetto funziona.

I file vengono inviati correttamente, e invio file con nome uguale aggiunge il numero e quelli di estensione diversa non li fa inviare.

Per ringraziarti inserisco il sito tra i ringraziamenti.
Cita messaggio
#6
OK, grazie del link!
Mattia!
Cita messaggio


Vai al forum:


Utenti che stanno guardando questa discussione: 1 Ospite(i)