begin process at 2012 05 30 15:38:15
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Divers

 > 

Général

 > 

LISTER LES FICHIERS D'UN DOSSIER ET EN FAIRE DES LIENS


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

LISTER LES FICHIERS D'UN DOSSIER ET EN FAIRE DES LIENS

lundi 12 juillet 2010 à 21:07:41 | LISTER LES FICHIERS D'UN DOSSIER ET EN FAIRE DES LIENS

djimson

bonsoir, j'ai pris un script pour lister les fichiers d'un dossiers et en faire des liens mais j'ai quelques petits soucis :

01 - Comment faire pour forcer le téléchargement des fichiers jpg et pdf, xlsx.... tout sorte de fichiers.
Voici le script en question :
<!--Script pour télécharger les fichiers envoyés par FTP -->
<?php

function listing($repertoire){

$fichier = array();

if (is_dir($repertoire)){

$dir = opendir($repertoire); //ouvre le repertoire courant désigné par la variable

while(false!==($file = readdir($dir))){ //on lit tout et on récupere tout les fichiers dans $file

if(!in_array($file, array('.','..'))){ //on eleve le parent et le courant '. et ..'

$page = $file; //sort l'extension du fichier
$page = explode('.', $page);
$nb = count($page);
$nom_fichier = $page[0];
for ($i = 1; $i < $nb-1; $i++){
$nom_fichier .= '.'.$page[$i];
}
if(isset($page[1])){
$ext_fichier = $page[$nb-1];
if(!is_file($file)) { $file = '/'.$file; }
}
else {
if(!is_file($file)) { $file = '/'.$file; } //on rajoute un "/" devant les dossier pour qu'ils soient triés au début
$ext_fichier = '';
}

if($ext_fichier != 'php' and $ext_fichier != 'html' and $ext_fichier != 'css') { //utile pour exclure certains types de fichiers à ne pas lister
array_push($fichier, $file);
}
}
}
}

natcasesort($fichier); //la fonction natcasesort( ) est la fonction de tri standard sauf qu'elle ignore la casse
$sommepoids = "";

foreach($fichier as $value) {
$poidsdufichier = round(filesize($repertoire."/".$value)/1024,2);
$sommepoids += $poidsdufichier;
echo'<table width=700 class=outline_gris>

<tr>
<td width=400 align=left><a href="'.rawurlencode($repertoire).'/'.rawurlencode(str_replace ('/', '', $value)).'">'.$value.'</a></td>
<td width=150 align = left>'.gmdate ("d/m/Y, H:i:s", filectime($repertoire."/".$value)).'</td><td width=150 align = left>'.round(filesize($repertoire."/".$value)/1024,2) .'Ko</td>
</tr>

</table>';
}
echo '<p>'.count($fichier).' fichiers disponibles pour un poids total de '.$sommepoids.' Ko</p>';

}

//exemple d'utilisation :

listing('./cours'); //chemin du dossier


?>
Merci
mardi 13 juillet 2010 à 10:42:54 | Re : LISTER LES FICHIERS D'UN DOSSIER ET EN FAIRE DES LIENS

TychoBrahe

Salut,

01 - Comment faire pour forcer le téléchargement des fichiers jpg et pdf, xlsx.... tout sorte de fichiers.


Un moyen simple est de créer une page PHP dont le seul rôle sera d'envoyer un header spécial puis le contenu du fichier. Bref, en gros (très gros même), ça donnerai un truc qui ressemble à ça :
Code PHP :
<?php
  /*                                                                            
   ** ATTENTION !                                                               
   ** Si vous devez utiliser un nom de fichier fourni par l'utilisateur         
   ** vous DEVEZ filtrer efficacement le dit fichier pour éviter de             
   ** graves failles de sécurité.                                               
   */
$file = 'ton_fichier.ext';
header('Content-Type: application/octet-stream');
header('Content-Transfer-Encoding: binary');
header('Content-Length: ' . filesize($file));
header('Content-disposition: filename="' . basename($file) . '"');
readfile($file);
?>


j'ai pris un script pour lister les fichiers d'un dossiers et en faire des liens


Ho punaise qu'il est mal codé. Vu qu'il n'y a ni coloration syntaxique ni indentation je n'ai fait qu'un rapide coup d'½il, voici quelques points en vrac :

  • opendir/readdir qui complexifient le script de manière inutile (boucle while atroce etc), un scandir aurait été carrément plus simple et bien meilleur pour la lisibilité.
  • oubli du closedir
  • affichage des fichiers cachés
  • récupération de l'extension du fichier complètement foireuse
  • dans la vie il existe autre chose que des fichiers réguliers et des répertoire... visiblement le dev n'en sais rien
  • exclusion des fichiers php/html/css foireuse (ho la fausse sécurité)
  • création d'une table entière par ligne

... et j'en passe. Je ne sais pas où tu as pris cette "chose" mais ce n'est clairement pas un exemple à suivre.
mardi 13 juillet 2010 à 10:56:30 | Re : LISTER LES FICHIERS D'UN DOSSIER ET EN FAIRE DES LIENS

djimson


Bonjour TychoBrahe, et merci pour ces remarques.
Le propriétaire du script m'avais déjà dis hier que ce script n'est plus d'actualité. Qu'on pouvais faire mieux.
Alors, vs n'avez pas une meilleure proposition du script pr moi? Suis pas pro php et j'essaie de comprendre un peu.
Pour mon code, j'avai pas vue que l'on pouvais le mettre entre les balises pr le rendre plus lisible.
En somme, je vs demande donc d m'orienter pour reprendre ce script ou tout autre.
Merci
mardi 13 juillet 2010 à 13:33:28 | Re : LISTER LES FICHIERS D'UN DOSSIER ET EN FAIRE DES LIENS

djimson


Je reviens avec ce script pr de l'aide :
lister.php
Code PHP :
     <?php
    
     // *******************************************
     // Nom du script : dir.php
     // Auteur : _SebF AT frameIP.com
     // Date de création : 14 Août 2004
     // version : 1.0
     // Licence : Ce script est libre de toute utilisation.
     // La seule condition existante est de faire référence au site http://www.frameip.com afin de respecter le travail d'autrui.
     // ********************************************
    
     // ********************************************
     // Accès au repertoire
     // ********************************************
     $chemin="./cours/";
     $handle_du_repertoire_ouvert=opendir($chemin);
    
     // ********************************************
     // Boucle réccupérant toute les entrées contennu dans le répertoire
     // ********************************************
     $sortie_de_la_boucle=false; // Initialise la boucle
     while ($sortie_de_la_boucle==false)
     {
     // ********************************************
     // Récupère les entrées contenu dans le repertoire une par une
     // ********************************************
     $entree=readdir($handle_du_repertoire_ouvert); // Readdir lit le fichier suivant dans un dossier
    
     // ********************************************
     // Condition de sortie de la boucle
     // ********************************************
     if ($entree=="")
     $sortie_de_la_boucle=true;
     else
     // ********************************************
     // Affichage
     // ********************************************
     if (($entree!=".")&&($entree!="..")) // N'affiche pas les . et ..
     if (is_dir($entree)!=1) // N'afiche pas les répertoires
     if (($entree!="index.php")&&($entree!="dir.php")) // N'affiche pas les fichiers selectionnés
	 echo"<a href='download.php?chemin='".$chemin.$entree."'&filename=".$entree."'>download</a><br>

";

     }
    
     ?>


download.php
Code PHP :
<?php
$file = .$chemin.$entree;
header('Content-Type: application/octet-stream');
header('Content-Transfer-Encoding: binary');
header('Content-Length: ' . filesize($file));
header('Content-disposition: filename="' . basename($file) . '"');
readfile($file);

?>

Je précise que je veux downloader tous sortes de fichiers sauf .php, .html
Quand je clique sur download, il a tendance à télécharger le fichier download.php
Merci de m'aider, je dois le faire pr des étudiants et c'est urgent vrmt. Dslé
mardi 13 juillet 2010 à 14:23:55 | Re : LISTER LES FICHIERS D'UN DOSSIER ET EN FAIRE DES LIENS

djimson

De l'aide svp, j'ai de sérieux blème avec ce script


Merci
mardi 13 juillet 2010 à 19:13:36 | Re : LISTER LES FICHIERS D'UN DOSSIER ET EN FAIRE DES LIENS

kohntark

Membre Club
Salut,


Si personne ne te l'a encore signalé, des propos comme "c'est urgent", des relances un peu trop hâtives, et des multi posts (http://www.phpcs.com/forum/sujet-FORCER-TELECHARGEMENT_1454606.aspx) poussent souvent les gens à ne pas répondre.

J'ai bien peur que l'endroit soit mal choisi si tu es dans l'urgence, tu ferais sans doute mieux de te tourner vers des sites comme ProgOnLine
Tu éviterai sans doute un résultat plus qu'incertain, avec des failles de sécurité importantes.

Ni vois pas là une quelconque méchanceté, je ne fais qu'un constat des scripts que tu postes : il y a un chemin qui ne se fera pas en 1 heure avant d'obtenir un script correct et suffisamment sécurisé.
Si par contre tu prends le temps des recherches et de l'apprentissage nécessaire tu auras, je n'en doute pas, toute l'aide nécessaire sur ce forum.


Tiens nous au courant !

Cordialement,



Kohntark -

mardi 13 juillet 2010 à 19:31:26 | Re : LISTER LES FICHIERS D'UN DOSSIER ET EN FAIRE DES LIENS

djimson


Ok, merci bien, désolé, certes suis embêté car depuis lors je fais des recherches mais je trouves pas.
Je reste à l'écoute.
encore merci

Merci


Cette discussion est classée dans : dossier, fichiers, lister, liens, value


Répondre à ce message

Sujets en rapport avec ce message

Lister tous les fichiers d'un dossier donné [ par lnp ] Comment faire pour lister tous les fichiers d'un dossier donné En vue de supprimer les fichiers qui ne sont plus nécessaire au fonctionnement de mon Lecture d'un nom de fichier...2 [ par magicsmacks ] Bonjour, J'avais demandais il y a qq jours ceci : " Bonjour, Je possède un dossier sur mon serveur dans lequel le no impression de fichiers [ par putch ] bonjour à tous !voila mon soucij'ai un repertoire pdf/ lequel se trouve un certains nombre de fichiers pdf :)je souhaiterai un lien/bouton pour lancer Lister fichier d'un repertoire distant [ par blat ] Bonjour,Je voudrais lister des fichiers d'un repertoire distant. En gros je veux qu'a partir de www.monsite.com/mapage.php je puisse avoir la liste de Lister les fichiers d u ndossier [ par Ze_doctor ] Salut tout le monde, J ai regardé apres une source en php pour ca mais aucune ne fonctionne chez moi :/ j ai reussi en rassembalnt quelques bouts de fonction qui s'apelle [ par BEAUBRIUS ] BonjoursJ'aimerai savoir si il est possible qu'une fonction s'apelle elle même ?Par exemple j'apelle une fonction pour lister les élements d'un dossie Lister les fichiers d'un répertoire et CHMOD [ par cg46 ] Bonjour,J'espère ne pas vous embêter avec mes questions.J'ai cherché un peu partout sans trouver...Voilà, je ne suis pas un pro de l'informatique et j Lister des fichiers [ par clive2k1 ] Salut! voilà j'ai choper qqpart un script qui permet de lister tout les fichiers d'un repertoire: $repertoire = '**nom/dossier**'; $dir = opendir($r problème avec les liens [ par progrima ] Bonjour tout le monde!Je cherche à faire ça: DossierX    Détail DossierY    Détail DossierZ    Détail 'Détail' est un Tout le monde peut accéder à mes fichiers, comment bloquer cela? [ par hasen ] Bonjour, bonjour. Je ne suis pas sur que cette question soit completement en rapport avec PHP, mais il me faut a tout rpix une reponse et je ne savais


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 4,618 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales