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

Langage PHP Discussion :

listage fichier ou dossier + lien


Sujet :

Langage PHP

  1. #1
    Membre éprouvé
    Avatar de koKoTis
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 438
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 438
    Par défaut listage fichier ou dossier + lien
    Bonjour, j'ai un script qui liste les dossiers et fichiers du répertoire courant, et créer des liens pour quelqu'un d'eux:
    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
    <?php 
    $directories = glob("*",GLOB_ONLYDIR); 
    foreach ($directories as $dir) 
    { 
    if ($dir != 'objets' && $dir !='img')	
       echo '<a href="'.$dir.'" > '.$dir.' </a><br>'; 
    } 
    ?> 
     
    <?php 
    $directories = glob("*.*"); 
    foreach ($directories as $dir) 
    { 
    if ($dir != 'liste_fichiers.php' && $dir !='img')
       echo '<a href="'.$dir.'" > '.$dir.' </a><br>'; 
    } 
    ?>
    Je voudrai apporter quelques améliorations à ce script:

    • 1) lorsque je clique sur le lien d'un fichier .bat qu'il ne me propose pâs le téléchargement du fichier mais qu'il affiche le contenu texte du fichier dans le navigateur.
    • 2) Que lorsque je clique sur le lien d'un dossier cela me liste aussi le contenu de ce sous dossier, et que je puisse aller comme cas jusqu'au bout de mon arborescence.


    Pouriez vous m'aider ?

  2. #2
    Membre émérite
    Avatar de Montor
    Homme Profil pro
    Autre
    Inscrit en
    Avril 2008
    Messages
    879
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Avril 2008
    Messages : 879
    Par défaut
    essaie ce code
    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
     
    <?php 
    if(isset($_GET['root'])&&$_GET['root']!='')
    {
    $str=$_GET['root'];
    $cdir= getdirs($str);
    echo '<a href=?root='.substr($str,0,-1).' >Preview ...</a><br>';
    }else
    {
    $cdir='';
    }
    function getdirs($inp)
    {
        $filter="";
        for ($i=0;$i<strlen($inp);$i++)
    		{
    			$dir= glob($filter."*",GLOB_ONLYDIR); 
    			$filter=$dir[$inp[$i]]."/";
       		}
    	return $filter;
     
    }
     
    $directories = glob($cdir."*",GLOB_ONLYDIR); 
    foreach ($directories as $key => $dir) 
    { 
    if ($dir != 'objets' && $dir !='img')	
    echo sprintf("<a href=?root=%s%d>[%s]</a><br>",$str,$key,basename($dir)); 
     
    } 
     
    $directories = glob($cdir."*.*"); 
    foreach ($directories as $dir) 
    { 
    if ($dir != 'liste_fichiers.php' && $dir !='img')
    echo  sprintf("<a href=?root=%s&file=%s>%s</a><br>",$str,rawurlencode($dir),basename($dir)); 
     
    } 
     
    if(isset($_GET['file']))
    	{
    	 $file=htmlentities(file_get_contents(rawurldecode($_GET['file'])));
     
    	 if(strpos($file,"\r")!==false)
    	 {
    	  $out="<pre>".$file."</pre>";
    	 }
    	 else
    	 {
    	 $out=$file;
    	 }
    	 echo <<<toend
    	 <div  style="width:100%;border: 1px inset;; height:300px; overflow:scroll ;">{$out};</div>
    	 
    	  
    toend;
    	}
     
     
    ?>

  3. #3
    Membre éprouvé
    Avatar de koKoTis
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 438
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 438
    Par défaut
    Bonjour et merci beaucoup

    ca me renvoi ces erreur que je suis à la racine:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Notice: Undefined variable: str in z:\scripting - batch vbs ect\0_script_ok\kj.php on line 28
    [Batch_(bat)]
     
    Notice: Undefined variable: str in z:\scripting - batch vbs ect\0_script_ok\kj.php on line 28
    [VBScript_(vbs)]
     
    Notice: Undefined variable: str in z:\scripting - batch vbs ect\0_script_ok\kj.php on line 36
    Exploreur de script.au3
     
    Notice: Undefined variable: str in z:\scripting - batch vbs ect\0_script_ok\kj.php on line 36
    kj.php
    Si non c'est pas mal, le seul truc c'est que je voyudrai que les script s'ouvre dans toute la page et pas dans un rectangle

  4. #4
    Membre éprouvé
    Avatar de koKoTis
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 438
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 438
    Par défaut
    a vrai dire avec mon code j'en sui la:
    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
     
     <?php
    $dossier = isset($_GET['dir']) ? $_GET['dir']: './';
     
    //Pour la s&eacute;curit&eacute;:
    if (realpath('.') !== substr(realpath($dossier),0,strlen(realpath('.')))) $dossier = './';
    chdir($dossier);
    //
     
    if  (is_array($dossiers = glob('*',GLOB_ONLYDIR))) {
      foreach ($dossiers as $dir) {
        if ($dir != 'objets' && $dir !='img')   
           echo '<a href="?dir='.$dossier.$dir.'/" class="dossier" >     '.$dir.' </a><br>';
      }
    }
     
    echo '<br>';
     
    if (is_array($fichiers = glob('*.*'))) {
      foreach ($fichiers as $dir)
      {
      if ($dir != 'Exploreur de script.au3' && $dir !='index.php' && $dir !='.htaccess.txt' && $dir !='lunnatickFond.jpg')
         echo '<a href="'.$dossier.'/'.$dir.'"  class="fichier">         '.$dir.' </a><br>';
      }
    }
     
    ?>
    il ne me reste plu qu'a forcer l'ouverture des script dans le naviguateur come une page

  5. #5
    Membre émérite
    Avatar de Montor
    Homme Profil pro
    Autre
    Inscrit en
    Avril 2008
    Messages
    879
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Avril 2008
    Messages : 879
    Par défaut
    excuse moi
    essaie ceci attention le code pcecedent contien une erreu il ne peux pa aller plus que dix sousdossier
    ce code est pour 255 maxi
    change le startpath voir le code
    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
     
    <?php 
    define("startpath",'C://');//le racine 
     
     
    if(isset($_GET['file']))
    	{
    	 $file=htmlentities(file_get_contents(rawurldecode($_GET['file'])));
    	 echo "<pre>".$file."</pre>";
    	}
    else
       {
    if(isset($_GET['root'])&&$_GET['root']!='')
    {
    $str=$_GET['root'];
    $cdir= getdirs($str);
    echo '<a href=?root='.substr($str,0,-2).' >Previous...</a><br>';
    }else
    {
    $cdir=startpath;
    }
     
     
     
     
    $directories = glob($cdir."*",GLOB_ONLYDIR); 
    foreach ($directories as $key => $dir) 
    { 
    if ($dir != 'objets' && $dir !='img')	
    echo sprintf("<a href=?root=%s%s>[%s]</a><br>",$str,dec_hex($key,2),basename($dir)); 
     
    } 
     
    $directories = glob($cdir."*.*"); 
    foreach ($directories as $dir) 
    { 
    if ($dir != 'liste_fichiers.php' && $dir !='img')
    echo  sprintf("<a href=?root=%s&file=%s>%s</a><br>",$str,rawurlencode($dir),basename($dir)); 
     
    } 
     
     }
     
     function getdirs($inp)
    {
        $filter=startpath;
        for ($i=0;$i<strlen($inp);$i+=2)
     
    		{$rv=hexdec(substr($inp,$i,2));
    			$dir= glob($filter."*",GLOB_ONLYDIR); 
    			$filter=$dir[$rv]."/";
     
       		}
    	return $filter;
     
    }
     function dec_hex($inps,$ln=0)
    {
     
      $str=str_repeat('x',$ln);
       for($i=strlen($str); $i>0; $i--)
       {
       	$str[$i-1]=dechex($inps & 15);
       	$inps>>=4;
       }
     return $str;  
    }
     
    ?>

  6. #6
    Membre éprouvé
    Avatar de koKoTis
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 438
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 438
    Par défaut
    il me renvoi ceci:
    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
    Notice: Undefined variable: str in z:\scripting - batch vbs ect\0_script_ok\kj.php on line 30
    [Documents and Settings]
     
    Notice: Undefined variable: str in z:\scripting - batch vbs ect\0_script_ok\kj.php on line 30
    [Program Files]
     
    Notice: Undefined variable: str in z:\scripting - batch vbs ect\0_script_ok\kj.php on line 30
    [RECYCLER]
     
    Notice: Undefined variable: str in z:\scripting - batch vbs ect\0_script_ok\kj.php on line 30
    [Scripting - Batch VBS ect]
     
    Notice: Undefined variable: str in z:\scripting - batch vbs ect\0_script_ok\kj.php on line 30
    [System Volume Information]
     
    Notice: Undefined variable: str in z:\scripting - batch vbs ect\0_script_ok\kj.php on line 30
    [Virtual Machines]
     
    Notice: Undefined variable: str in z:\scripting - batch vbs ect\0_script_ok\kj.php on line 30
    [WINDOWS]
     
    Notice: Undefined variable: str in z:\scripting - batch vbs ect\0_script_ok\kj.php on line 30
    [_KooKaTix]
     
    Notice: Undefined variable: str in z:\scripting - batch vbs ect\0_script_ok\kj.php on line 30
    [sauvegarde]
     
    Notice: Undefined variable: str in z:\scripting - batch vbs ect\0_script_ok\kj.php on line 38
    AUTOEXEC.BAT
     
    Notice: Undefined variable: str in z:\scripting - batch vbs ect\0_script_ok\kj.php on line 38
    Bootfont.bin
     
    Notice: Undefined variable: str in z:\scripting - batch vbs ect\0_script_ok\kj.php on line 38
    CONFIG.SYS
     
    Notice: Undefined variable: str in z:\scripting - batch vbs ect\0_script_ok\kj.php on line 38
    EyeCandyLog.txt
     
    Notice: Undefined variable: str in z:\scripting - batch vbs ect\0_script_ok\kj.php on line 38
    IO.SYS
     
    Notice: Undefined variable: str in z:\scripting - batch vbs ect\0_script_ok\kj.php on line 38
    MSDOS.SYS
     
    Notice: Undefined variable: str in z:\scripting - batch vbs ect\0_script_ok\kj.php on line 38
    NTDETECT.COM
     
    Notice: Undefined variable: str in z:\scripting - batch vbs ect\0_script_ok\kj.php on line 38
    boot.ini
     
    Notice: Undefined variable: str in z:\scripting - batch vbs ect\0_script_ok\kj.php on line 38
    pagefile.sys
     
    Notice: Undefined variable: str in z:\scripting - batch vbs ect\0_script_ok\kj.php on line 38
    sqmdata00.sqm
     
    Notice: Undefined variable: str in z:\scripting - batch vbs ect\0_script_ok\kj.php on line 38
    sqmnoopt00.sqm
    c'est pas les dosseir ou j'ai mi la php

  7. #7
    Membre émérite
    Avatar de Montor
    Homme Profil pro
    Autre
    Inscrit en
    Avril 2008
    Messages
    879
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Avril 2008
    Messages : 879
    Par défaut
    il faut ajouter is_dir si il y a un nom d'un dossier contenent un point il serait afficher avec les fichiers
    dans cette ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if ($dir != 'liste_fichiers.php' && $dirs !='img'&& !is_dir($dir))
    ou dans ton code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if (!is_dir($dir) && $dir != 'Exploreur de script.au3' && $dir !='index.php' && $dir !='.htaccess.txt' && $dir !='lunnatickFond.jpg')

  8. #8
    Membre éprouvé
    Avatar de koKoTis
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 438
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 438
    Par défaut
    si je rajoute && !is_dir($dir) il ne me liste plu rien

  9. #9
    Membre émérite
    Avatar de Montor
    Homme Profil pro
    Autre
    Inscrit en
    Avril 2008
    Messages
    879
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Avril 2008
    Messages : 879
    Par défaut
    tu mets le variable $str au debut de code

  10. #10
    Membre émérite
    Avatar de Montor
    Homme Profil pro
    Autre
    Inscrit en
    Avril 2008
    Messages
    879
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Avril 2008
    Messages : 879
    Par défaut
    cette erreur se produits aussi avec $dir parceque vous avez activer peut etre l'option afficher tous les erreurs et notifications
    voici la valeur par defaut dans php.ini
    error_reporting = E_ALL & ~E_NOTICE & ~E_STRICT

    pour le fonction is_dir tu vas la mettre seulement ici pour les fichiers imagine un dossier comme "MSXML 4.0 " il serait afficher avec les fichiers
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    $directorie = glob($cdir."*.*"); 
    foreach ($directorie as $dirs) 
    { 
    if ($dir != 'liste_fichiers.php' && $dirs !='img'&& !is_dir($dirs))
    echo  sprintf("<a href=?root=%s&file=%s>%s</a><br>",$str,rawurlencode($dirs),basename($dirs)); 
     
    }

  11. #11
    Membre éprouvé
    Avatar de koKoTis
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 438
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 438
    Par défaut
    ok j'ai donc ajouter && !is_dir($dirs)

Discussions similaires

  1. Liste des fichiers d'un dossier + Liens
    Par kiki29 dans le forum Contribuez
    Réponses: 7
    Dernier message: 03/04/2018, 07h22
  2. Réponses: 1
    Dernier message: 17/05/2013, 19h48
  3. [XL-2010] macro Lien Hypertexte pour trouver fichier dans dossiers
    Par thimote dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 13/02/2013, 11h12
  4. [.htaccess] listage d'un dossier et accès fichier
    Par Tchupacabra dans le forum Apache
    Réponses: 5
    Dernier message: 03/03/2008, 09h39
  5. Réponses: 1
    Dernier message: 30/11/2006, 11h01

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