• User Attivo

    Fatto!!! Grazie mille!


  • User Attivo

    Eccomi ancora a stressare.

    Allora, il risultato voluto è quello che:

    • immagini modificate da meno di 20 minuti = VERDE
    • immagini modificate tra 21 minuti e 10 ore = ARANCIONE
    • immagini modificate più di 10 ore prima fino a 15 giorni = ROSSO

    Il codice che ho scritto è questo:

    [php]
    <?php
    $dir = './';

    foreach(glob($dir.'*.jpg') as $file) {
    if (fileatime($file) < (time() - (10 * 60 * 60)) && fileatime($file) > (time() - (15 * 24 * 60 * 60))) {
    print "<a href='$file' class='elen'><font color=red><b>$file</b></font></a> <span class='picc'>- <b>Data</b>: " . date("d F Y H:i:s", filemtime($file) . "\n");
    echo "<p />";

    }
    if (fileatime($file) < (time() - (20 * 60)) && fileatime($file) > (time() - (09 * 60 * 60))) {
    print "<a href='$file' class='elen'><font color=orange><b>$file</b></font></a> <span class='picc'>- <b>Data</b>: " . date("d F Y H:i:s", filemtime($file) . "\n");
    echo "<p />";

    }
    if (filemtime($file) > (time() - (19 * 60))) {
    print "<a href='$file' class='elen'><font color=green><b>$file</b></font></a> <span class='picc'>- <b>Data</b>: " . date("d F Y H:i:s", filemtime($file) . "\n");
    echo "<p />";

    }

    }

    ?>
    [/php]

    Il problema è che con questo codice mi escono solo le verdi! Cosa sto sbagliando?

    Grazie mille!!!!


  • User Attivo

    Aiutoooooo! Grazie!


  • User

    A parte dei buchi (quelle modificate tra 9:01 ore e 9:59 non le visualizza) sembrerebbe giusto.
    Sei sicuro (guardando il sorgente pagina) che siano verdi? Ossia che ci sia il font color green


  • User Attivo

    Sisi, le verdi sono le uniche che mostra!


  • User

    A parte che io ne vedo una rossa, prova così...

    
     <?php  
    $dir = './';  
       
    foreach(glob($dir.'*.jpg') as $file) {  
        if (filemtime($file) > (time() - (19 * 60))) { 
        print "<a href='$file' class='elen'><font color=green><b>$file</b></font></a> <span class='picc'>- <b>Data</b>: " . date("d F Y H:i:s", filemtime($file) . "\n"); 
        echo "<p />"; 
    } 
        elseif (fileatime($file) > (time() - (10 * 60 * 60)))    { 
        print "<a href='$file' class='elen'><font color=orange><b>$file</b></font></a> <span class='picc'>- <b>Data</b>: " . date("d F Y H:i:s", filemtime($file) . "\n"); 
        echo "<p />"; 
    } 
        elseif (fileatime($file) > (time() - (15 * 24 * 60 * 60)))    { 
        print "<a href='$file' class='elen'><font color=red><b>$file</b></font></a> <span class='picc'>- <b>Data</b>: " . date("d F Y H:i:s", filemtime($file) . "\n"); 
        echo "<p />"; 
    
    } 
    
    }  
    
    ?>  
    
    

  • User Attivo

    Con il tuo nuovo codice gli arancioni continuano a mancare... Dovrebbe stamparne una modificata il 07 August ma nada.

    E poi come mai in rosso si vedono delle immagini modificate nel 2008 quando teoricamente quelle piu vecchie di 15 giorni non dovrebbero comparire?

    Che sclero...! Grazie mille!


  • User

    Trovato!

    Alcune volte usi filemtime altre fileatime...


  • User Attivo

    Noooooo! Lo sapevo che sarebbe stata una cosa del genere! Ahahah

    Grazie mille EcoBB, molto molto gentile!
    Spero non ti debba rompere più 😉


  • User Attivo

    Sono tornato a stressarvi!
    Sto provando ora a inserire un paio di immagini che però sono su domini diversi da quello dove viene caricata la pagina php.
    Ho trovato questo codice:

    [php]<?php

    function filemtime_remote($uri)
    {
    $uri = parse_url($uri);
    $handle = @fsockopen($uri['host'],80);
    if(!$handle)
    return 0;

    fputs($handle,"GET $uri[path] HTTP/1.1\r\nHost: $uri[host]\r\n\r\n");
    $result = 0;
    while(!feof($handle))
    {
        $line = fgets($handle,1024);
        if(!trim($line))
            break;
    
        $col = strpos($line,':');
        if($col !== false)
        {
            $header = trim(substr($line,0,$col));
            $value = trim(substr($line,$col+1));
            if(strtolower($header) == 'last-modified')
            {
                $result = strtotime($value);
                break;
            }
        }
    }
    fclose($handle);
    return $result;
    

    }
    echo filemtime_remote('...............');

    ?>[/php]

    che però mi restituisce un numero tipo "1255956361"...!

    Come mai?? Cosa c'è che non va??

    DANKE!


  • ModSenior

    Ciao rdo,

    è la data in formato timestamp, è normale.
    Per convertirla puoi passare il valore timestamp nella funzione date.


  • User Attivo

    @Thedarkita said:

    Per convertirla puoi passare il valore timestamp nella funzione date.

    Aiaiai, parli arabo! Dammi solo un indicazione piu chiara poi provo io a farlo...!
    Grazie mille davvero, sei molto molto disponibile!


  • ModSenior

    [php]
    echo date("Y-m-d", filemtime_remote('...............'));
    [/php]