IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

EDI, CMS, Outils, Scripts et API PHP Discussion :

Script qui liste les repertoires donnant des liens sur les fichiers


Sujet :

EDI, CMS, Outils, Scripts et API PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Août 2005
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 18
    Par défaut Script qui liste les repertoires donnant des liens sur les fichiers
    Bonjour,

    J'essaye de mettre en place le script http://cyberzoide.developpez.com/php4/file/

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    270
    271
    272
    273
    274
    275
    276
    277
    278
    279
    280
    281
    282
    283
    284
     
    <html> 
    <head> 
    <style type="text/css"> 
    * {font-size: 10pt;} 
    </style> 
    </head> 
    <body> 
     
    <?php 
     
    /* racine */ 
    $BASE = "../.."; 
     
    /* infos à extraire */ 
    function addScheme($entry,$base,$type) { 
      $tab['name'] = $entry; 
      $tab['type'] = filetype($base."/".$entry); 
      $tab['date'] = filemtime($base."/".$entry); 
      $tab['size'] = filesize($base."/".$entry); 
      $tab['perms'] = fileperms($base."/".$entry); 
      $tab['access'] = fileatime($base."/".$entry); 
      $t = explode(".", $entry); 
      $tab['ext'] = $t[count($t)-1]; 
      return $tab; 
    } 
     
    /* liste des dossiers */ 
    function list_dir($base, $cur, $level=0) { 
      global $PHP_SELF, $BASE, $order, $asc; 
      if ($dir = opendir($base)) { 
        $tab = array(); 
        while($entry = readdir($dir)) { 
          if(is_dir($base."/".$entry) && !in_array($entry, array(".",".."))) { 
            $tab[] = addScheme($entry, $base, 'dir'); 
          } 
        } 
        /* tri */ 
        usort($tab,"cmp_name"); 
        foreach($tab as $elem) { 
          $entry = $elem['name']; 
          /* chemin relatif à la racine */ 
          $file = $base."/".$entry; 
         /* marge gauche */ 
          for($i=1; $i<=(4*$level); $i++) { 
            echo "&nbsp;"; 
          } 
          /* l'entrée est-elle le dossier courant */ 
          if($file == $cur) { 
            echo "<img src=\"dir-open.gif\" />&nbsp;$entry<br />\n"; 
          } else { 
            echo "<img src=\"dir-close.gif\" />&nbsp;<a href=\"$PHP_SELF?dir=". rawurlencode($file) ."&order=$order&asc=$asc\">$entry</a><br />\n"; 
          } 
          /* l'entrée est-elle dans la branche dont le dossier courant est la feuille */ 
          if(ereg($file."/",$cur."/")) { 
            list_dir($file, $cur, $level+1); 
          } 
        } 
        closedir($dir); 
      } 
    } 
     
    /* liste des fichiers */ 
    function list_file($cur) { 
      global $PHP_SELF, $order, $asc, $order0; 
      if ($dir = opendir($cur)) { 
        /* tableaux */ 
        $tab_dir = array(); 
        $tab_file = array(); 
        /* extraction */ 
        while($file = readdir($dir)) { 
          if(is_dir($cur."/".$file)) { 
            if(!in_array($file, array(".",".."))) { 
              $tab_dir[] = addScheme($file, $cur, 'dir'); 
            } 
          } else { 
              $tab_file[] = addScheme($file, $cur, 'file'); 
          } 
        } 
        /* tri */ 
        usort($tab_dir,"cmp_".$order); 
        usort($tab_file,"cmp_".$order); 
        /* affichage */ 
        echo "<table cellspacing=\"0\" cellpadding=\"0\" border=\"0\">"; 
        echo "<tr style=\"font-size:8pt;font-family:arial;\"> 
        <th>".(($order=='name')?(($asc=='a')?'/\\ ':'\\/ '):'')."<a href=\"$PHP_SELF?dir=".rawurlencode($cur). "&order=name&asc=$asc&order0=$order\">Nom</a></th><td>&nbsp;</td> 
        <th>".(($order=='size')?(($asc=='a')?'/\\ ':'\\/ '):'')."<a href=\"$PHP_SELF?dir=".rawurlencode($cur). "&order=size&asc=$asc&order0=$order\">Taille</a></th><td>&nbsp;</td> 
        <th>".(($order=='date')?(($asc=='a')?'/\\ ':'\\/ '):'')."<a href=\"$PHP_SELF?dir=".rawurlencode($cur). "&order=date&asc=$asc&order0=$order\">Dernière modification</a></th><td>&nbsp;</td> 
        <th>".(($order=='type')?(($asc=='a')?'/\\ ':'\\/ '):'')."<a href=\"$PHP_SELF?dir=".rawurlencode($cur). "&order=type&asc=$asc&order0=$order\">Type</a></th><td>&nbsp;</td> 
        <th>".(($order=='ext')?(($asc=='a')?'/\\ ':'\\/ '):'')."<a href=\"$PHP_SELF?dir=".rawurlencode($cur). "&order=ext&asc=$asc&order0=$order\">Extention</a></th><td>&nbsp;</td> 
        <th>".(($order=='perms')?(($asc=='a')?'/\\ ':'\\/ '):'')."<a href=\"$PHP_SELF?dir=".rawurlencode($cur). "&order=perms&asc=$asc&order0=$order\">Permissions</a></th><td>&nbsp;</td> 
        <th>".(($order=='access')?(($asc=='a')?'/\\ ':'\\/ '):'')."<a href=\"$PHP_SELF?dir=".rawurlencode($cur). "&order=access&asc=$asc&order0=$order\">Dernier accès</a></th></tr>"; 
        foreach($tab_dir as $elem) { 
          echo "<tr><td><img src=\"dir-close.gif\" />&nbsp;".$elem['name']."</td><td>&nbsp;</td> 
          <td>&nbsp;</td><td>&nbsp;</td> 
          <td>".date("d/m/Y H:i:s", $elem['date'])."</td><td>&nbsp;</td> 
          <td>".assocType($elem['type'])."</td><td>&nbsp;</td> 
          <td>&nbsp;</td><td>&nbsp;</td> 
          <td>".$elem['perms']."</td><td>&nbsp;</td> 
          <td>".date("d/m/Y", $elem['access'])."</td></tr>\n"; 
        } 
        foreach($tab_file as $elem) { 
          echo "<tr><td><img src=\"file-none.gif\" />&nbsp;".$elem['name']."</td><td>&nbsp;</td> 
          <td align=\"right\">".formatSize($elem['size'])."</td><td>&nbsp;</td> 
          <td>".date("d/m/Y H:i:s", $elem['date'])."</td><td>&nbsp;</td> 
          <td>".assocType($elem['type'])."</td><td>&nbsp;</td> 
          <td>".assocExt($elem['ext'])."</td><td>&nbsp;</td> 
          <td>".$elem['perms']."</td><td>&nbsp;</td> 
          <td>".date("d/m/Y", $elem['access'])."</td></tr>\n"; 
        } 
        echo "</table>"; 
        closedir($dir); 
      } 
    } 
     
    /* formatage de la taille */ 
    function formatSize($s) { 
      /* unités */ 
      $u = array('octets','Ko','Mo','Go','To'); 
      /* compteur de passages dans la boucle */ 
      $i = 0; 
      /* nombre à afficher */ 
      $m = 0; 
      /* division par 1024 */ 
      while($s >= 1) { 
        $m = $s; 
        $s /= 1024; 
        $i++; 
      } 
      if(!$i) $i=1; 
      $d = explode(".",$m); 
      /* s'il y a des décimales */ 
      if($d[0] != $m) { 
        $m = number_format($m, 2, ",", " "); 
      } 
      return $m." ".$u[$i-1]; 
    } 
     
    /* formatage du type */ 
    function assocType($type) { 
      /* tableau de conversion */ 
      $t = array( 
        'fifo' => "file", 
        'char' => "fichier spécial en mode caractère", 
        'dir' => "dossier", 
        'block' => "fichier spécial en mode bloc", 
        'link' => "lien symbolique", 
        'file' => "fichier", 
        'unknown' => "inconnu" 
      ); 
      return $t[$type]; 
    } 
     
    /* description de l'extention */ 
    function assocExt($ext) { 
      $e = array( 
        '' => "inconnu", 
        'doc' => "Microsoft Word", 
        'xls' => "Microsoft Excel", 
        'ppt' => "Microsoft Power Point", 
        'pdf' => "Adobe Acrobat", 
        'zip' => "Archive WinZip", 
        'txt' => "Document texte", 
        'gif' => "Image GIF", 
        'jpg' => "Image JPEG", 
        'png' => "Image PNG", 
        'php' => "Script PHP", 
        'php3' => "Script PHP", 
        'htm' => "Page web", 
        'html' => "Page web", 
        'css' => "Feuille de style", 
        'js' => "JavaScript" 
      ); 
      if(in_array($ext, array_keys($e))) { 
        return $e[$ext]; 
      } else { 
        return $e['']; 
      } 
    } 
     
    function cmp_name($a,$b) { 
        global $asc; 
        if ($a['name'] == $b['name']) return 0; 
        if($asc == 'a') { 
            return ($a['name'] < $b['name']) ? -1 : 1; 
        } else { 
            return ($a['name'] > $b['name']) ? -1 : 1; 
        } 
    } 
    function cmp_size($a,$b) { 
        global $asc; 
        if ($a['size'] == $b['size']) return cmp_name($a,$b); 
        if($asc == 'a') { 
            return ($a['size'] < $b['size']) ? -1 : 1; 
        } else { 
            return ($a['size'] > $b['size']) ? -1 : 1; 
        } 
    } 
    function cmp_date($a,$b) { 
        global $asc; 
        if ($a['date'] == $b['date']) return cmp_name($a,$b); 
        if($asc == 'a') { 
            return ($a['date'] < $b['date']) ? -1 : 1; 
        } else { 
            return ($a['date'] > $b['date']) ? -1 : 1; 
        } 
    } 
    function cmp_access($a,$b) { 
        global $asc; 
        if ($a['access'] == $b['access']) return cmp_name($a,$b); 
        if($asc == 'a') { 
            return ($a['access'] < $b['access']) ? -1 : 1; 
        } else { 
            return ($a['access'] > $b['access']) ? -1 : 1; 
        } 
    } 
    function cmp_perms($a,$b) { 
        global $asc; 
        if ($a['perms'] == $b['perms']) return cmp_name($a,$b); 
        if($asc == 'a') { 
            return ($a['perms'] < $b['perms']) ? -1 : 1; 
        } else { 
            return ($a['perms'] > $b['perms']) ? -1 : 1; 
        } 
    } 
    function cmp_type($a,$b) { 
        global $asc; 
        if ($a['type'] == $b['type']) return cmp_name($a,$b); 
        if($asc == 'a') { 
            return ($a['type'] < $b['type']) ? -1 : 1; 
        } else { 
            return ($a['type'] > $b['type']) ? -1 : 1; 
        } 
    } 
    function cmp_ext($a,$b) { 
        global $asc; 
        if ($a['ext'] == $b['ext']) return cmp_name($a,$b); 
        if($asc == 'a') { 
            return ($a['ext'] < $b['ext']) ? -1 : 1; 
        } else { 
            return ($a['ext'] > $b['ext']) ? -1 : 1; 
        } 
    } 
    ?> 
     
    <table border="1" cellspacing="0" cellpadding="10" bordercolor="gray"> 
    <tr valign="top"><td> 
     
    <!-- liste des répertoires 
    et des sous-répertoires --> 
    <?php  
    if(!in_array($order, array('name','date','size','perms','ext','access','type'))) { 
      $order = 'name'; 
    } 
    if(($order == $order0) && ($asc != 'b')) { 
      $asc = 'b'; 
    } else { 
      $asc = 'a'; 
    } 
    /* lien sur la racine */ 
    if(!$dir) { 
      echo "<img src=\"dir-open.gif\" />&nbsp;/<br />\n"; 
    } else { 
      echo "<img src=\"dir-close.gif\" />&nbsp;<a href=\"$PHP_SELF\">/</a><br />\n"; 
    } 
    list_dir($BASE, rawurldecode($dir), 1);  
    ?> 
     
    </td><td> 
     
    <!-- liste des fichiers --> 
    <?php 
    /* répertoire initial à lister */ 
    if(!$dir) { 
      $dir = $BASE; 
    }  
    list_file(rawurldecode($dir));  
    ?> 
     
    </td></tr> 
    </table> 
     
    </body> 
    </html>

    J'ai plusieurs erreurs :
    Notice: Undefined variable: dir in E:\Program Files\EasyPHP 2.0b1\www\listest1.php on line 94

    Notice: Undefined variable: dir in E:\Program Files\EasyPHP 2.0b1\www\listest1.php on line 99

    Notice: Undefined variable: dir in E:\Program Files\EasyPHP 2.0b1\www\listest1.php on line 107

    comment lui déclarer cette variable...

    je peux pas répeter quand meme $dir = $BASE en plus ça n'a pas de sens non?


    Je vous remercie

  2. #2
    Membre Expert Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 895
    Par défaut
    les NOTICE ne sont pas à proprement parler des erreurs mais juste des avertissements ;-)


    pour régler ce problème sans toucher à la configuration de ton serveur, met juste
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    if( !isset($dir) )
          $dir = "";
    au début de ton script ;-)

  3. #3
    Membre averti
    Inscrit en
    Août 2005
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 18
    Par défaut
    OK merci

    Donc j'ai bien mon tableau avec la liste des dossiers par contre lorsque je clique sur un dossier... rien ne se passe, comme s'il recharger la page mais avec le meme dossier...

    Une idée ?

  4. #4
    Membre Expert Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 895
    Par défaut
    bah ça vient du même problème qu'au-dessus... tu lui dis nul part que tu as sélectionné un dossier...

    faut modifier la ligne que je t'ai donné plus haut :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    if( !isset($_GET["dir"]) )
         $dir = "";
    else
         $dir = $_GET["dir"];

  5. #5
    Membre averti
    Inscrit en
    Août 2005
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 18
    Par défaut
    Merci beaucoup !

    Wow c'est rapide ces réponses...

    Donc j'ai continué la suite du script du même site...

    j'ai mis la partie triage :

    J'ai le message d'avertissement

    >> Notice: Undefined variable: order in E:\Program Files\EasyPHP 2.0b1\www\listest1.php on line 294



    <?php
    if(!in_array($order, array('name','date','size','perms','ext','access','type'))) {
    $order = 'name';
    Je suppose que c'est le même probleme quand haut, dois je déclarer $order = "" ; ?


    >>Notice: Undefined variable: asc in E:\Program Files\EasyPHP 2.0b1\www\listest1.php on line 300

    Pareil c'est une déclaration de variable....

    Mais ce que je comprend pas c'est que dans la source, il a définit des variables globlal ex:

    function cmp_access($a,$b) {
    global $asc;
    if ($a['access'] == $b['access']) return cmp_name($a,$b);
    if($asc == 'a') {
    return ($a['access'] < $b['access']) ? -1 : 1;
    } else {
    return ($a['access'] > $b['access']) ? -1 : 1;
    }
    }
    dois je encore redéclarer asc ?





    >>Notice: Undefined variable: PHP_SELF in E:\Program Files\EasyPHP 2.0b1\www\listest1.php

    j'ai rajouté cette ligne $PHP_SELF = $_SERVER['PHP_SELF']; au début de mon script. Est ce la bonne méthode ?



    Merci !

  6. #6
    Membre Expert Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 895
    Par défaut
    oui en fait, ce script est codé en PHP4... à l'époque (lol) la variable register_globals était sur ON ce qui faisait que tu ne devais pas spécifier la provenance des variables...

    exemple :

    ton URL : monsite.com?page=test

    en php4 : echo $page; // affiche "test"
    en php5 : echo $page; // affiche Notice : undefined index 'page'
    en php5 correct : echo $_GET["page"]; // affiche "test"


    tu dois donc travailler sur un serveur en PHP5 ou en tout cas, configuré avec les register_globals sur OFF. il faudra donc définir chaque variables de la façon décrite dans mon post plus haut, c-a-d :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    if( !isset($_GET["maVar"]) ) 
          $maVar = $_GET["maVar"];
    else
          $maVar = "";
    Evidemment, il ne faut faire cela que pour les variables qui te retourne une Notice undefined index ;-)


    EDIT :
    il en est de même pour les autres types de variables ($_POST, $_SERVER, $_SESSION) donc au moment du register_globals, on écrivait $PHP_SELF et le serveur interprétait tout seul la variable en tant que $_SERVER["PHP_SELF"] tu as donc bien fait ;-)

  7. #7
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Par défaut
    Ton sujet voyage

    Est-ce que tu as vu ce sujet ? Un Treeview en PHP
    Dans tous les cas, tu as maintenant les bons mots-clefs pour tes recherches

  8. #8
    Membre averti
    Inscrit en
    Août 2005
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 18
    Par défaut
    Mince je croyai que j'avais recu 2 fois ton email me disant que mon sujet a été déplacé ... (je pensai que c'était un bug) mais nn il voyage

    Bon je regarde ton site...

    EDIT: C'est pas tout à fait ce que je recherche, la personne travaille avec un fichier txt pour faire sa Tree.

    Ce que fais l'utilisateur dans mon cas:

    Il cherche via un moteur de recherche interne un nom de dossier.
    Il y aune conneixon à une BDD
    Une liste apparait avec des liens

    Ce que je veux:

    Lorsqu'on clic sur ses liens, aller directement dans le repertoire correspondant.
    Lorsqu'on clic sur un fichier dans cee repertoire, on le visualise ou le telecharge.

  9. #9
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Par défaut
    Ok.

    Est-ce que tu as pu tirer quelque chose de ce que je t'ai proposé (SPL) ?

  10. #10
    Membre averti
    Inscrit en
    Août 2005
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 18
    Par défaut
    malheureusement non,
    Le truc qui m'énerve c'est que je n'ai pas assez de temps pour m'interresse au SPL dont le langage "objet" (entre guillemet) est mieux....

    Je n'ai pas très bien compris qu'est ce que tu voulais me montrer

    Pour mon problème de lien j'ai trouvé :

    $lien = str_replace('%2F', '/',rawurlencode($cur));

    echo "<tr><a href=".$lien.'/'.$elem['name'].">".$elem['name']."</a><td>&nbsp;</td>
    <td align=\"right\">".formatSize($elem['size'])."</td><td>&nbsp;</td>
    <td>".date("d/m/Y H:i:s", $elem['date'])."</td><td>&nbsp;</td>
    <td>".assocType($elem['type'])."</td><td>&nbsp;</td>
    <td>".assocExt($elem['ext'])."</td><td>&nbsp;</td>
    <td>".$elem['perms']."</td><td>&nbsp;</td>
    <td>".date("d/m/Y", $elem['access'])."</td></tr>\n";
    Je sais que str replace n'est pas terrible.... mais j'ai deux problemes...
    Je dois gardé dans mon répertoire les "/" par contre le variable $elem contien le nom du fichier... si je laisse comme ça je vais avoir pour le fichier "Guide d'installation"

    "http://site/repertoire/sousrepertoire/Guide"

    Je pense qu'il existe une fonction qui permet de remplacer tout les carracteres connues "éàè espace..." par %20, %47 ex

  11. #11
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Par défaut
    L'idée est d'encoder en URL puis en entités HTML. Par chance, les entités URL n'ont pas besoin d'être encodées en HTML, mais c'est quand même plus sûr de le faire (pour correspondre à la norme HTML)

    Tu peux essayer le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    <style type="text/css">
    .folder {
        font-weight:bold;
    }
    </style>
    <?php
    if(!empty($_GET['browse']))
    {
        $browse = base64_decode($_GET['browse']);
        if(is_file($browse))
        {
            $directory = dirname($browse);
        }
        else
        {
            $directory = $browse;
        }
    }
    else
    {
        $directory = dirname(__FILE__).'/..';
    }
     
    $iter = new RecursiveIteratorIterator(
         new RecursiveDirectoryIterator($directory, RecursiveDirectoryIterator::KEY_AS_FILENAME),
         RecursiveIteratorIterator::SELF_FIRST
    );
     
    echo html($directory).'<br/><br/>';
    echo get_link('', realpath($directory.'/..'), '..');
     
    foreach($iter as $entry)
    {
        if($entry->isDir())
        {
            $type = 'folder';
        }
        else
        {
            $type = 'file';
        }
        $spacing = str_repeat("&nbsp;", 3*$iter->getDepth());
        echo get_link($spacing, $entry->getRealPath(), $entry);
    }
     
     
    function html($string)
    {
        return htmlentities($string, ENT_QUOTES, 'ISO-8859-1');
    }
     
    function get_link($spacing, $realpath, $label)
    {
        if(is_dir($realpath))
        {
            $type = 'folder';
        }
        else
        {
            $type = 'file';
        }
     
        return sprintf(
            '<div class="%s">%s<a title="Voir" href="?browse=%s">%s</a></div>'."\n",
            $type,
            $spacing,
            base64_encode($realpath),
            $label);
    }

Discussions similaires

  1. [XL-2007] Créer des liens sur les formes et verrouiller des formes
    Par kopax dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 24/08/2011, 11h23
  2. Réponses: 5
    Dernier message: 29/03/2011, 10h33
  3. Éviter les copier coller des tests sur les sessions
    Par frboyer dans le forum Langage
    Réponses: 1
    Dernier message: 09/04/2009, 14h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo