Advertisement
sebbu

listing

Nov 14th, 2017
558
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 3.84 KB | None | 0 0
  1. <?php
  2. header('Content-Type: text/html;charset=iso-8859-1'."\r\n");
  3. ?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  4. <html xmlns="http://www.w3.org/1999/xhtml">
  5. <head>
  6. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
  7. <title>Index of <?php
  8. $pdir=dirname(realpath(__FILE__));
  9. $dir=$_SERVER['REQUEST_URI'];
  10. /*var_dump($pdir);
  11. var_dump($dir);
  12. var_dump(is_dir($pdir.$dir));
  13. echo '</title></head><body><p>Error</p></body></html>';die();//*/
  14. if( !is_dir($pdir.$dir) && dirname($dir)!='/' && dirname($dir)!='\\' ) {
  15.     //echo '#';
  16.     echo dirname($_SERVER['REQUEST_URI']),'/';
  17. }
  18. else if( is_dir($pdir.$dir) && $dir!='/' && $dir!='\\' ) {
  19.     //echo '##';
  20.     echo $_SERVER['REQUEST_URI'];
  21. }
  22. else {
  23.     //echo '###';
  24.     echo '/';
  25. }
  26. ?></title>
  27. <style type="text/css">
  28. img {
  29.     border: 0;
  30. }
  31. img.icon {
  32.     width:  20px;
  33.     height: 20px;
  34.     vertical-align: middle;
  35.     padding-right:  3px;
  36. }
  37. a {
  38.    
  39. }
  40. </style>
  41. </head>
  42. <body>
  43.  
  44. <table>
  45. <?php
  46.  
  47. /*if($_SERVER['REQUEST_URI']==='/listing.php') {
  48.     echo "\tAcc&egrave;s refus&eacute; !","\r\n";
  49.     echo '</table>',"\r\n\r\n";
  50.     echo '</body>',"\r\n",'</html>';
  51.     die();
  52. }//*/
  53.  
  54.             function strlimit($str, $limit)
  55.             {
  56.                 if (mb_strlen($str) > $limit)
  57.                     return substr($str, 0, $limit) . '...';
  58.                 return $str;
  59.             }
  60.  
  61.             function render_size($size)
  62.             {
  63.                 $return = '0 B';
  64.                 $sizes  = array('B', 'kB', 'MB', 'GB', 'TB');
  65.                 $i  = 0;
  66.                 while ($size > 0)
  67.                 {
  68.                     $d  = pow(1024, count($sizes) - $i);
  69.                     if ($size >= $d)
  70.                         return round($size / $d, 2) . ' ' . $sizes[count($sizes) - $i];
  71.                     ++$i;
  72.                 }
  73.                 return $return;
  74.             }
  75.  
  76.             function get_ext($file)
  77.             {
  78.                 if (strpos($file, '.') !== false)
  79.                     return substr($file, strrpos($file, '.') + 1, strlen($file) - strrpos($file, '.'));
  80.                 return 'none';
  81.             }
  82.  
  83. $root=dirname(realpath(__FILE__));
  84.  
  85.             $path   = '.';
  86.             if (isset($_GET['path']))
  87.                 $path = $_GET['path'];
  88.             //var_dump($root, realpath($path));
  89.             if(strpos(realpath($path), $root)===FALSE) $path='.';
  90.             $o  = new RecursiveDirectoryIterator($path, RecursiveDirectoryIterator::CURRENT_AS_FILEINFO);
  91.             $tmp    = array();
  92.             foreach ($o as $file)
  93.             {
  94.                 if (substr($file->getFilename(), 0, 1) == '.')
  95.                     continue;
  96.                 if (strcmp($file->getFilename(),basename($_SERVER['PHP_SELF']))==0)
  97.                     continue;
  98.                 //$tmp[($file->isDir() ? '_' : '') . $file->getFilename()] = $file;
  99.                 $tmp[$file->getFilename()] = $file;
  100.             }
  101.             //ksort($tmp);
  102.             uksort($tmp,'strnatcasecmp');
  103.             if (basename($path) != '.')
  104.                 echo "\t".'<tr><td><a href="?path='.dirname($path).'" /><img src="/parent.png" class="icon" /></a></td><td><a href="?path='.dirname($path).'" />..</a></td></tr>'."\r\n";
  105.             foreach($tmp as $file)
  106.             {
  107.                 if ($file->getFilename() == '.')// || get_ext($file->getFilename()) ==  'php')
  108.                     continue;
  109.                 $file2=$file->getFilename();
  110.                 if(!file_exists($path.'/'.$file2)) continue;
  111.                 if( substr($file2,0,2)=='.\\' ) $file2=substr($file2,2);
  112.                 $file3=rawurlencode($file2);
  113.                 echo "\t".'<tr>'."\r\n";
  114.                 if ($file->isDir())
  115.                     printf("\t\t".'<td><a href="?path='.$path.'/%s"><img src="/folder.png" class="icon"/></a></td>'."\r\n", $file3);
  116.                 else
  117.                     printf("\t\t".'<td><a href="'.$path.'/%s"><img src="/dl.gif" class="icon" /></a></td>'."\r\n", $file3);
  118.                 if ($file->isFile())
  119.                     printf("\t\t<td><a href=\"$path/%s\">%s [%s]</a></td>\r\n\t\t\t\t<td>%s</td>\r\n\t\t\t\t<td>%s</td>\r\n", $file3, strlimit($file2, 40), get_ext($file2), render_size($file->getSize()), date('d/m/Y H:i:s', $file->getCTime()));
  120.                 else
  121.                     printf("\t\t<td><a href=\"?path=$path/%s\">%s</a></td>\r\n\t\t\t\t<td>&nbsp;</td>\r\n\t\t\t\t<td>%s</td>\r\n", $file3, strlimit($file2, 40), date('d/m/Y H:i:s', $file->getCTime()));
  122.                 echo "\t".'</tr>'."\r\n";
  123.             }
  124. ?></table>
  125.  
  126. </body>
  127. </html>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement