Visualizzazione risultati 1 fino 15 di 15

Discussione: [php] eliminare file dopo confronto ora

  1. #1
    L'avatar di sevenjeak
    sevenjeak non è connesso AlterGuru
    Data registrazione
    25-10-2007
    Residenza
    Roma
    Messaggi
    1,769

    Predefinito [php] eliminare file dopo confronto ora

    Salve utenti.

    Ho cercato su questo forum e su altri ma non trovo nulla, io ho questo script:
    codice PHP:

    Codice PHP:
    <?php
    foreach (glob("Files/*") as $out)
    {
    $name = $out;
    $name = str_replace("Files/", "", $name);
    $files = explode(".", $name);
    if (
    date('His') >= $files[2]) {
    unlink($out);
    }
    }
    ?>
    In poche palore cerca tutti i file presente nella directory e le divede in punti per poi controllare se la funzione data('His') e magiore o uguale a $file[2], contenente un'altra data nel formato His, se se verifica quasta condisione mi dovrebbe eliminare il file dello script ma non me lo elemina.

    Come mai?

    Sevenjeak
    Software developer and much more

  2. #2
    L'avatar di mycarlo
    mycarlo non è connesso Utente attivo
    Data registrazione
    06-10-2009
    Residenza
    $this->s50
    Messaggi
    467

    Predefinito

    Di sicuro è un problema della funzione unlink oppure la condizione non viene superata.

    Prova così:

    Codice PHP:
    <?php
    foreach (glob("Files/*") as $out)
    {
    $name = $out;
    $name = str_replace("Files/", "", $name);
    $files = explode(".", $name);
    if (
    date('His') >= $files[2]) {
    unlink(dirname($out) . "/" . $name);
    }
    }
    ?>

  3. #3
    Guest

    Predefinito

    sei sicuro che la data sia nel terzo elemento dell'array?
    Puoi fare un esempio del nome dei file?

  4. #4
    L'avatar di sevenjeak
    sevenjeak non è connesso AlterGuru
    Data registrazione
    25-10-2007
    Residenza
    Roma
    Messaggi
    1,769

    Predefinito

    si, cmq mi serve a creare un script di upload file che permette all'utente di inviare un file rinominato nel formato: ip_mittente.data_invio.data_scadenza, quindi per vedere se i file vengono effettivamente cancellate dovrei aspettare la data di scadenza del file
    Ultima modifica di sevenjeak : 31-10-2009 alle ore 11.50.22

    Sevenjeak
    Software developer and much more

  5. #5
    Guest

    Predefinito

    Ti consiglio di usare gli unix timestamp, ovvero quando crei il file per data invio usi time(), mer data scadenza usi mktime(). In questo modo ti faciliti il confronto tra date.

  6. #6
    L'avatar di sevenjeak
    sevenjeak non è connesso AlterGuru
    Data registrazione
    25-10-2007
    Residenza
    Roma
    Messaggi
    1,769

    Predefinito

    E la condizione come la dovrei modificare?

    Sevenjeak
    Software developer and much more

  7. #7
    Guest

    Predefinito

    Prova a sostituire date("His") con time()

  8. #8
    L'avatar di mycarlo
    mycarlo non è connesso Utente attivo
    Data registrazione
    06-10-2009
    Residenza
    $this->s50
    Messaggi
    467

    Predefinito

    Ma mica solo quello.
    Dovresti convertire tutto anche il nome del file.

    Saluti!

  9. #9
    L'avatar di sevenjeak
    sevenjeak non è connesso AlterGuru
    Data registrazione
    25-10-2007
    Residenza
    Roma
    Messaggi
    1,769

    Predefinito

    Dovrei modificare il nome del file cosi: ip_mittente.time_invio.time_scadenza.html

    Se dovrei fare cosi come potrei fare ad ottenere il time_invio e il time_scadenza avendo la data di invio e di scadenza?

    Sevenjeak
    Software developer and much more

  10. #10
    Data registrazione
    04-09-2009
    Messaggi
    183

    Predefinito

    Age Of Empires GIF Creator & Archive
    New! Blog informatico di scripting PHP avanzato
    Vuoi giocare online a Age of Empires The Conquerors? -> Usa Voobly !! (MSN Zone non lo supporta più dal 19 giugno 2006)
    Il mio clan di The Conquerors -> Rifugio dei Conquerors
    Il mio stato su Xfire Live Video -> Unreal Tournament 2004
    Facebook MMORPG

  11. #11
    L'avatar di sevenjeak
    sevenjeak non è connesso AlterGuru
    Data registrazione
    25-10-2007
    Residenza
    Roma
    Messaggi
    1,769

    Predefinito

    Scuate, ma non e che lo capita molto la funzione mktime().

    Cmq ho provato ha modificare la mia if cosi:

    Codice PHP:
    if (date('His', mktime()) >= date($files[2], mktime)) {
    unlink(dirname($out) . "/" . $name);
    }
    ma il codice che sta all'interno ( quello che elimina il file ) mi viene eleminato anche quando la data attuale non è maggiore o uguale alla data di scadenza.

    Sevenjeak
    Software developer and much more

  12. #12
    Data registrazione
    04-09-2009
    Messaggi
    183

    Predefinito

    Citazione Originalmente inviato da sevenjeak Visualizza messaggio
    Scuate, ma non e che lo capita molto la funzione mktime().
    ma hai letto gli esempi? sono molto chiari!

    Timestamp UNIX del 1 nov 2009 ore 13.33.12 ->
    Codice PHP:
    mktime ( 13, 33, 12, 11, 1, 2009 );
    Il timestap Unix è un numero progressivo, perciò un momento temporale successivo a un altro avrà sempre Timestamp maggiore!

    Invece il tuo date('His') è molto ambiguo...

    15:50 viene prima di 16:50 ( 155000 < 165000 ). Prova invece a vedere se 23.59 viene prima di 00.01 ( no perchè 235900 > 000100 = 100 !! )
    Ultima modifica di ageofempiresgif : 01-11-2009 alle ore 14.39.42
    Age Of Empires GIF Creator & Archive
    New! Blog informatico di scripting PHP avanzato
    Vuoi giocare online a Age of Empires The Conquerors? -> Usa Voobly !! (MSN Zone non lo supporta più dal 19 giugno 2006)
    Il mio clan di The Conquerors -> Rifugio dei Conquerors
    Il mio stato su Xfire Live Video -> Unreal Tournament 2004
    Facebook MMORPG

  13. #13
    L'avatar di sevenjeak
    sevenjeak non è connesso AlterGuru
    Data registrazione
    25-10-2007
    Residenza
    Roma
    Messaggi
    1,769

    Predefinito

    Ho modificato il mio script nel modo che mi crea il file in questo formato: ip_mittente-ora_scadenza:minuti_scadenza:segondi_scadenza.html e il file php che lo elimina cosi:
    Codice PHP:
    foreach (glob("Files/*") as $out)
    {
    $name = $out;
    $name = str_replace("Files/", "", $name);
    $files = explode("-", $name);
    $mk_current = mktime(date('H'), date('i'), date('s'));
    $mk = explode(":", $files[1]);
    $mk_end = mktime($mk[0], $mk[1], $mk[2]);
    if (
    $mk_current >= $mk_end) {
    unlink(dirname($out) . "/" . $name);
    }
    }
    Ora il file non me lo elemina sempre, ma dovrei ancora vedere se me lo elemina alla data di scadenza.

    Sevenjeak
    Software developer and much more

  14. #14
    Data registrazione
    04-09-2009
    Messaggi
    183

    Predefinito

    Se i files hanno estensione .html, hai dimenticato di rimuoverla per il controllo! Potrebbe essere parte del problema.
    Age Of Empires GIF Creator & Archive
    New! Blog informatico di scripting PHP avanzato
    Vuoi giocare online a Age of Empires The Conquerors? -> Usa Voobly !! (MSN Zone non lo supporta più dal 19 giugno 2006)
    Il mio clan di The Conquerors -> Rifugio dei Conquerors
    Il mio stato su Xfire Live Video -> Unreal Tournament 2004
    Facebook MMORPG

  15. #15
    L'avatar di sevenjeak
    sevenjeak non è connesso AlterGuru
    Data registrazione
    25-10-2007
    Residenza
    Roma
    Messaggi
    1,769

    Predefinito

    Citazione Originalmente inviato da ageofempiresgif Visualizza messaggio
    Se i files hanno estensione .html, hai dimenticato di rimuoverla per il controllo! Potrebbe essere parte del problema.
    cosa?

    Cmq lo script mi funziona

    Sevenjeak
    Software developer and much more

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •