- Home
- Categorie
- Coding e Sistemistica
- PHP
- [Risolto] Controllare frequenza aggiornamento files
-
Con questo codice:
[php]<?php
$dir = './';foreach(glob($dir.'*.jpg') as $file) {
print $file . "\n";
print "<br />";
}?>[/php]
sono riuscito ad ottenere una lista di tutte le foto della directory. Ora come faccio a stampare la data di aggiornamento e colorare di rosso quelle non aggiornate da piu di 24h?
-
Questo è un esempio:
<?php $dir = './'; foreach(glob($dir.'*.jpg') as $file) { print $file . " - Data: " . date("F d Y H:i:s.", fileatime($file) . "\n"; if (fileatime($file) < (time() - (24 * 60 * 60))) echo "<font color=red> non modificata </font>\n"; print "<br />"; } ?>
-
Grazie EcoBB!
Funziona, ho aggiunto un echo "<br />"; dopo "60)))" di modo che impagina meglio i files.Un altra domanda, se volessi linkare $file all'immagine caricata sul server come posso fare? Ho fatto delle prove ma sono completamente negato!
Grazie ancora!
-
<?php $dir = './'; foreach(glob($dir.'*.jpg') as $file) { print "<a href='$file'>$file</a> - Data: " . date("F d Y H:i:s.", fileatime($file) . "\n"; if (fileatime($file) < (time() - (24 * 60 * 60))) echo "<font color=red> non modificata </font>\n"; print "<br />"; } ?>
-
Un ultima cosa poi non ti stresso piu...
E' possibile stampare solamente i files che non sono aggiornati da 12h a 15 giorni?
Perchè nella cartella ci sono anche delle immagini statiche e mi da fastidio che compaiano come "non modificate"!Grazie mille!
-
Ciao rdo,
Prova cosi:
[php]
<?php
$dir = './';foreach(glob($dir.'*.jpg') as $file) {
print "<a href='$file'>$file</a> - Data: " . date("F d Y H:i:s.", fileatime($file) . "\n";
if (fileatime($file) < (time() - (12 * 60 * 60)) && fileatime($file) > (time() - (15 * 24 * 60 * 60)))
echo "<font color=red> non modificata </font>\n";
print "<br />";
}?>
[/php]
-
Non funzia...
Parse error: syntax error, unexpected ';' in /srv/www/hosting/sites/............................php on line 13
Non sono riuscito a togliere l'errore!!
-
Fatto!!! Grazie mille!
-
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!!!!
-
Aiutoooooo! Grazie!
-
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
-
Sisi, le verdi sono le uniche che mostra!
-
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 />"; } } ?>
-
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!
-
Trovato!
Alcune volte usi filemtime altre fileatime...
-
Noooooo! Lo sapevo che sarebbe stata una cosa del genere! Ahahah
Grazie mille EcoBB, molto molto gentile!
Spero non ti debba rompere più
-
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!
-
Ciao rdo,
è la data in formato timestamp, è normale.
Per convertirla puoi passare il valore timestamp nella funzione date.
-
@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!
-
[php]
echo date("Y-m-d", filemtime_remote('...............'));
[/php]