Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1

    Rinominare, automaticamente, un file???

    Ciao a tutti,
    da un pò di tempo sto smanettando ad uno semplice script che mi permette di fare l'upload di un file dal PC ad un server.

    Ho impostato vari controlli ed in particolare faccio un controllo (mediante un IF) per vedere se sul SERVER esiste già un file con lo stessp nome del file che si vuole uploadare. La verifica funziona perfettamente, ma poichè sono un tipo preciso mi piacerebbe migliorare ancora di più il mio script.

    In particolare attualmente se sul server è già presente un file con lo stesso del file che si vuole uploadare, lo script si interrompe e come output da un messaggio del tipo:

    codice:
    Attenzione, esiste già un file con questo nome!
    Mi stavo chiedendo se è possibile, se si come, rinominare in automatico il file in modo che possa essere caricato lo stesso sul server ma con un nome diverso.

    Sapete dirmi qualcosa in riguardo?

    ciao ciao

  2. #2
    Utente di HTML.it L'avatar di wallrider
    Registrato dal
    Apr 2003
    Messaggi
    2,755
    potresti inserire data e ora nel nome del file

    aaaammmgghhmm_nomefile.ext
    RIP Cicciobenzina 9/11/2010

    "Riseminaciceli, i ceci nell'orto"

  3. #3
    oppure usa md5(time() . $_SERVER['REMOTE_ADDR']); (controlla la variabile remote_addr perchè io sono ancora fermo alle versioni vecchie
    Questa e' la mia firma! Lo so, e' una mezza schifezza.
    Un sito
    - skype non è per consulenze online -

  4. #4
    Ciao,
    grazie per il tuo suggerimento...credo che farò proprio così!

    Però se non ti dispiace mi dovresti dare un piccolo aiuto perchè sono ancora un principiante con php e sto imparando un pò alla volta.

    Allora io per copiare il file sul SERVER, utilizzo questo codice:

    codice:
    @copy($file_upload, "$uppath/$file_upload_name") or $log .= "Impossibile copiare l'immagine nel server";
    Allora come si fa ad aggiungere al nome del file una porzione di testo in modo da rendere il nome univoco? La data credo di sapere come ricavarla, ma non so come modificare il nome del file.

  5. #5
    A parte qualche @ di troppo (!!) e le variabili un po' datate (ma se funziona a te... ) il nome del file lo trovi nella variabile $file_upload_name... Quindi se vuoi modificare il nome basta che fai:
    Codice PHP:
    $file_upload_name date("dmYHi") . $file_upload_name//Così concateni la data al nome del file
    @copy($file_upload"$uppath/$file_upload_name") or $log .= "Impossibile copiare l'immagine nel server"
    Questa e' la mia firma! Lo so, e' una mezza schifezza.
    Un sito
    - skype non è per consulenze online -

  6. #6
    Grazie tante!
    Adesso funziona ed è molto meglio.

    A questo punto ti chiedo un consiglio. secondo te è opportuno nominare il file con la data e l'ora?

    Quali sono le variabili un pò datate? (giusto per imparare)

  7. #7
    1) è opportuno nominare i file con la data e l'ora?
    Dipende dal traffico del tuo sito. Si, è un buon sistema, ma cosa succede se due utenti fanno l'upload di un file che si chiama Immagine.gif nel medesimo istante? Che sul server vengono creati due file con lo stesso nome (o meglio, uno sovrascriverà l'altro, o uno dei due utenti riceverà un errore). Per quello consigliavo l'md5. (md5() è un metodo di crittazione a una sola via, utile in questo casp perchè restituisce una stringa alfanumerica che difficilmente sarà uguale ad un altro file). Se fai:
    Codice PHP:
    $file_upload_name md5($_SERVER['REMOTE_ADDR']) . date("dmYHi") . $file_upload_name//Così concateni la data al nome del file
    @copy($file_upload"$uppath/$file_upload_name") or $log .= "Impossibile copiare l'immagine nel server"
    allora sei praticamente sicuro che i files non avranno mai nome uguale, l'unico difetto è che avrai files con nomi parecchio lunghi...

    2)quali sono le variabili un po' datate?
    Come ricavi $file_upload_name? Dalla versione 4.1.0 di PHP sono state introdotte le nuove variabili $_FILES[] che contengono tutte le informazioni sui files...

    Se vuoi approfondire (anche per quanto riguarda la variabile $_SERVER che ho usato nello script), guarda qui:
    http://it2.php.net/manual/it/reserved.variables.php

    E se hai qualche domanda chiedi pure!
    Questa e' la mia firma! Lo so, e' una mezza schifezza.
    Un sito
    - skype non è per consulenze online -

  8. #8
    Grazie per le tue risposte e per il tuo aiuto.

    Originariamente inviato da iraiscoming223
    1) è opportuno nominare i file con la data e l'ora?
    Dipende dal traffico del tuo sito. Si, è un buon sistema, ma cosa succede se due utenti fanno l'upload di un file che si chiama Immagine.gif nel medesimo istante? Che sul server vengono creati due file con lo stesso nome (o meglio, uno sovrascriverà l'altro, o uno dei due utenti riceverà un errore). Per quello consigliavo l'md5. (md5() è un metodo di crittazione a una sola via, utile in questo casp perchè restituisce una stringa alfanumerica che difficilmente sarà uguale ad un altro file). Se fai:
    Codice PHP:
    $file_upload_name md5($_SERVER['REMOTE_ADDR']) . date("dmYHi") . $file_upload_name//Così concateni la data al nome del file
    @copy($file_upload"$uppath/$file_upload_name") or $log .= "Impossibile copiare l'immagine nel server"
    allora sei praticamente sicuro che i files non avranno mai nome uguale, l'unico difetto è che avrai files con nomi parecchio lunghi...

    A questo avevo pensato anche io e per tale motivo avevo pensato, poichè l'upload lo può fare solo un utente registrato, di inserire nel nome del file , oltre alla data e l'ora, anche il nome (username che è unico) dell'utente che effettua l'upload. In questo modo sono sicuro che il nome è univoco. Ma mi domandavo se va bene così, cioè se è corretto mettere anche l'username dell'utente nel nome del file. Infatti per non far comparire l'username dell'utente avevo pensato di criptare tutto il nome così come si fa con le password.

    Che ne pensi?

    Un'altra domanda: per fare il controllo sul file, come ad esempio il nome, la dimensione, il peso, ecc io utilizzo delle condizioni IF e ELSE concatenandole fra di loro in modo da non avere buchi. E' giusta questa procedura? esistono anche altri metodi?

  9. #9
    Per quanto riguarda mettere lo username nel nome del file lo puoi fare tranquillo, a meno che tu non abbia problemi per qualche tua applicazione (ma sinceramente non riesco a immaginare nulla del genere!). :master:

    Parlando invece degli if concatenati penso che possano andar bene... Poi magari come efficienza non sono il massimo (non so come è organizzato il tuo script), ma a mio avviso la sicurezza prima di tutto. Se il tuo script funziona allora va bene così. Se lo vuoi "rimodernare" non farlo a discapito della sicurezza, visto che poi se succede qualche casino ne risponde il proprietario del dominio (almeno, nel mio contratto è così)...
    Questa e' la mia firma! Lo so, e' una mezza schifezza.
    Un sito
    - skype non è per consulenze online -

  10. #10
    magari per risparmiare sulla lunghezza del nome del file ti basterebbe fare

    Codice PHP:
    $file_upload_name md5($username).$file_upload_name
    per le ultime domande, sono un principiante come te riguardo php, perciò mi unisco alla discussione e attendo curioso delle risposte...
    I hope there is a way back with my talisman
    so I look into myself to the days when I was just a child
    come follow me to wonderland and see the tale that never ends
    don't fear the lion nor the witch I can't come back
    I'm lost but still I know there is another world

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.