NewbieContest

Programmation => Langages Web => Discussion démarrée par: geogeo le 28 Novembre 2009 à 10:11:30



Titre: Comment afficher les dates de modif de tous les fichiers de mon site web
Posté par: geogeo le 28 Novembre 2009 à 10:11:30
Hello les jeun's !

Mon problème va surement faire sourire certains d'entre vous ....

J'ai touché il y a looooongtemps a certains fichiers d'include planqués de mon site pour une sombre histoire d'affichage d'image (peu importe).
Le souci c'est que évidemment, je n'ai rien documenté et forcément, je ne retrouve plus ce que j'ai touché (c'est con quand même  :/).

Existe il un utilitaire me permettant de voir la date de motif de chacun des fichiers présents sur le domaine (ca restreindra déja pas mal la recherche) ?

Merci d'avance pour votre aide toujours si précieuse (un peu de lèche de fais jamais de mal ...)


Titre: Re : Comment afficher les dates de modif de tous les fichiers de mon site web
Posté par: robert33 le 28 Novembre 2009 à 13:11:25
En php, tu as la fonction filemtime (http://php.net/manual/fr/function.filemtime.php) qui t'indique la date de dernière modification, après sur unix par exemple t'as les fonctions de base du noyau du type ls qui ont des options pour afficher tous les fichiers et dossiers d'un emplacement récursivement, en triant par date de dernière modification, tu peux aussi afficher ces dates, etc...


Titre: Re : Comment afficher les dates de modif de tous les fichiers de mon site web
Posté par: geogeo le 29 Novembre 2009 à 09:43:24
Bon ... j'aurais préféré une solution plus simple mais si tu me dis que j'ai pas le choix ....

Si ca peut éviter a quelqu'un d'autre de le faire, le voici :
(J'ai pas beaucoup de temps a y consacrer ... c'est a peaufiner)

Code:
<?php

// Extensions autorisées :
$auth_ext = array("php","html");

// Récupère tous les fichiers présents
function getAllFiles($directory$recursive true) {
 global $auth_ext;
     
$result = array();
     
$handle =  opendir($directory);
     while (
$datei readdir($handle))
     {
          if ((
$datei != '.') && ($datei != '..'))
          {
               
$file $directory.$datei;
   // extention du fichier :
   $tab_ext explode(".",$file);
   $ext $tab_ext[count($tab_ext) -1];

   // Si c'est un repertoire, on le parcours lui aussi
               
if (is_dir($file)) {
                    if (
$recursive) {
                         
$result array_merge($resultgetAllFiles($file.'/'));
                    }
// sinon, on vérifie que c'est une extention autorisée et on stocke les résultats
             
} elseif( in_array($ext,$auth_ext)) {
                    
$result[] = $file;
               }
          }
     }
     
closedir($handle);
     return 
$result;
}

//Scan la liste de fichiers et traite les valeurs
function getTimestamps($directory$recursive true) {
     
$allFiles getAllFiles($directory$recursive);

// alimentation des tableaux de noms et de dates
     
foreach ($allFiles as $val) {
$names[] = $val;
$dates[] = filemtime($val);}

// classement des résultats
array_multisort($datesSORT_DESCSORT_STRING$names);  

//concatenation du résultat
 $i =0;
     foreach ($dates as $date) {
 $result.= '<tr><td>'.$names[$i].'</td><td>'.date('Y-m-d H:i:s',$date).'</td></tr>';  
     $i++;
     }
  
     return 
$result;
}

// affichage
echo '<br><table border="1"><th>nom du fichier</th><th>date et heure</th>'.getTimestamps('../').'</table>';

?>



EDIT : HAAAAAAAAA j'ai retrouvé ce @#~#@ de fichier ...
Merci pour le tuyau Robert33. A+!