[RESOLU] Sécurisé une liste de fichiers triée par date en cas de date identique

Eléphanteau du PHP | 42 Messages

10 juin 2015, 22:47

Bonjour,

J'ai le code ci-dessous.
Je dois impérativement le sécuriser. Si deux fichiers ont la même date ...
Malheureusement les tableaux c'est pas mon truc.
Je vais de ce pas encore une fois chercher sur internet pour tenter d'avoir un visuel mental de ce qui se passe quand on joue avec la création d'un array. En attendant toute aide est le bienvenue.

Code : Tout sélectionner

$tab=array(); $i=0; while ($file = readdir($dir)) { if($file != '..' && $file !='.' && $file !='') { $nom[]=$file; $now = date("Y/m/d - h:i:s",filemtime($mapage.$file)); $date[]=$now; $tab[$date[$i]]=$nom[$i]; $i++; } } ksort($tab); closedir($dir);
Bonne journée

Mammouth du PHP | 688 Messages

10 juin 2015, 23:03

quel est le but ?
ce qui est unique, c'est le nom de fichier. pour chaque élément du répertoire, si tu ajoutes une entrée à ton tableau avec le nom et la date, tu ne peux pas avoir de doublon, et tu peux trier par nom ou date ton tableau.

Eléphanteau du PHP | 42 Messages

11 juin 2015, 12:24

oui, c'est ce que je viens de comprendre. Je dois inverser key et value et passer par un asort().
Enfin... je suppose, je vais essayer.
Merci

Eléphanteau du PHP | 42 Messages

12 juin 2015, 11:35

En fait j'ai pas réussit.
J'ai fait ça à la place.
Ca semble fonctionner.
C'est utile pour les photographes par exemple.

Code : Tout sélectionner

$i=0; $tab=array(); while ($file = readdir($dir)) { if($file != '..' && $file !='.' && $file !='') { $nom[]=$file; // On prend la date pour en faire le N° du fichier // $now = date("Y/m/d - h:i:s",filemtime($mapage.$file)); // Prévision jusqu' 100 fichiers ayant la même date à la seconde près // $now .= '00'; // Si un fichier avec la même date (le même n°) existe déjà -> numéro +1 // if (!empty($tab)) { foreach($tab as $key => $file) { if ($key == $now) { $now++; } } } $date[]=$now; $tab[$date[$i]]=$nom[$i]; $i++; } } krsort($tab);