Forum Programmation.web Récupérer la liste des répertoires persos...

Posté par  .
Étiquettes : aucune
0
11
août
2004
Bonjour à tous !
Dans le cadre d'un développement personnel, j'ai créé des comptes pour différents utilisateurs sur ma machine afin qu'ils puissent créer leurs pages persos. Ca fonctionne plutôt pas mal, en utilisant le répertoire par défaut public_html à la racine du compte utilisateur.
J'aimerai pouvoir dresser la liste de ces répertoires utilisateurs automatiquement, en utilisant un script php si possible, mais je n'ai pas trouvé comment procéder. En effet, l'url devient www.truc.com/~user, alors que sur mon disque dur, le répertoire physique dans lequel sont les pages html et autres scripts php est /home/user/public_html.
J'avais bien pensé à ouvrir le répertoire /home, et pour chaque entrée trouvée à cet endroit, chercher les répertoires public_html, ainsi :

pour chaque $rep dans /home
si le répertoire /home/$rep/public_html existe et est lisible
Ajouter ~$rep à la liste des utilisateurs
fsi
fpour

Mais si ceci pouvait être mis dans un cache, ce serait encore mieux... Je ne sais pas comment faire.... Merci pour vos suggestions et aides.
P.S. : le but de la manoeuvre est de proposer ces répertoires persos dans un menu html/css, et ce de manière dynamique, car à la main, ça risque d'être vite chiant.
  • # début de code

    Posté par  . Évalué à 2.

    J'ai fais un truc du genre pour ma machine perso :

    (Notez que je suis pas du tout un pro de php...)

    <?php
    error_reporting(E_ALL ^ E_NOTICE ^ E_WARNING);
    $dir = "/home";
    $dh = opendir($dir);
    while ($filename = readdir($dh)) {
    $files[] = $filename;
    }
    closedir ($dh);
    sort($files);
    clearstatcache();
    foreach ($files as $file) {
    if (is_dir($dir."/".$file."/public_html")) {
    echo "< li >< a href=\"~$file/\" >$file< /a >< /li >\n";
    }
    }
    ?>


    En esperant que ça t'aide...
    • [^] # Re: début de code

      Posté par  . Évalué à 1.

      En esperant que ça t'aide... Bien sûr que ça m'aide... Pendant ce temps là, j'ai un peu regardé les fonctionnalités à disposition, et j'arriverai à peu près à ce qui suit (très largement inspiré de ton code)....
      <?php
      $homeDir="/home";
      $dirHandle = opendir ($homeDir);
      while (false !== ($dirname=readdir($dirHandle)))
      {
        if (is_dir ("{$homeDir}/{$dirname}/public_html"))
          $homeDirs[] = $dirname;
      }
      closedir ($dirHandle);
      sort ($homeDirs);
      print_r ($homeDirs);
      ?>
      
      Ca fonctionne (pour l'instant, le print_r me suffit, je n'en suis qu'à une phase de tests). Pour la partie cache, j'ai eu une idée un peu différente de celle que tu proposes en utilisant clearstatecache. En effet, je pensais tout simplement (?) mettre le résultat du parcours ci-dessous dans un fichier xml, et provoquer l'affichage du menu avec une feuille de style xslt. Le tout serait mixé par du code php, j'ai vu que c'était faisable. L'avantage (à moins que je ne sois dans l'erreur avec mon idée) résiderait dans l'utilisation de ce fichier xml : si il est plus vieux que le répertoire /home, il suffit de l'éclater (le xml, hein, pas le /home), et de le régénérer, sinon, on l'utilise tel quel. Je pense à du xml, car j'aimerai pouvoir intégrer en même temps que cette liste d'autres informations récupérées d'autres fichiers (probablement xml aussi) pour affiner l'affichage de mon menu. Voilà. Merci pour l'aide en tout cas.
      • [^] # Re: début de code

        Posté par  (site web personnel) . Évalué à 0.

        Je connais pas bien bien php mais y'a pas un buge là ?
        while (false !== ($dirname=readdir($dirHandle)))
        • [^] # Re: début de code

          Posté par  . Évalué à 1.

          Non, non, y'a pas de bug, c'est un opérateur propre à php qui veut dire différent mais de même type. Dans le même genre, tu as ===. Voilà.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.