Erreur dans mon script?!?!

Erreur dans mon script?!?! - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 07-05-2003 à 16:59:52    

Bonjour,  
J'ai un petit script qui fait le listing de mon "/var/www/html/", mais j'ai un petit bogue et j'arrive pas à le résoudre. Voici mon script:
<?php
// Get the mime types.
 
$fd=fopen("/etc/mime.types","r" );
while (!feof($fd)) {
    $buf = trim(fgets($fd,1024));
    if (strlen($buf) > 0) {
        if (substr($buf,0,1) != "#" ) {
            $tmp = preg_split("/[\s]+/", $buf, -1, PREG_SPLIT_NO_EMPTY);
            $num = sizeof($tmp);
            if ($num > 1) {
                for ($i=1;$i<$num;$i++) {
                    if (strstr($tmp[$i],"#" )) {
                    } else {
                        $mime[$tmp[$i]]=strtolower(substr($tmp[0], 0, strpos($tmp[0], "/" )));
                    }
                }
            unset($tmp);
            }
        }
    }
}
fclose($fd);
 
function formatSize($bytes) {
    if ($bytes > 1048576 ) {
        $output  = sprintf("%." . 1 . "f", $bytes / 1048576 );
        $output .= " Mb";
    } elseif ($bytes > 1024 ) {
        $output  = sprintf("%." . 0 . "f", $bytes / 1024 );
        $output .= " Kb";
    } else {
        $output  = sprintf("%." . 0 . "f", $bytes );
        $output .= " bytes";
    }
    return $output;
}
 
// Use this function to get the directory contents.
function getFiles($dir = "", $sort = "type", $sortasc) {
    global $mime;
    clearstatcache();
    $files = array();
    $handle = @opendir($dir);
    while(($file = readdir($handle)) !== false) {
        if($file != "." && $file != ".." ) {
            $files[$file]['filename'] = $file;
            $files[$file]['lcfilename'] = strtolower($file);
            $files[$file]['filesize'] = fileSize($dir.$file);
            $files[$file]['date'] = filectime($dir.$file);
            $files[$file]['type'] = substr(strrchr($file, "." ), 1);
            $files[$file]['size'] = filesize($dir.$file);
            $files[$file]['mimetype'] = $mime[substr(strrchr($file, "." ), 1)];
            $files[$file]['formattedsize'] = formatSize(filesize($dir.$file));
            $files[$file]['formatteddate'] = date("j/n/y G:i", filectime($dir.$file));
        }
    }
    closedir($handle);
    foreach ($files as $val) {
        $sortarray[] = $val[$sort];
    }
 
    if ($sortasc == "true" || !isset($sortasc)) {
        array_multisort($sortarray,SORT_ASC, SORT_REGULAR ,$files, SORT_ASC, SORT_REGULAR );
    } else {
        array_multisort($sortarray,SORT_DESC, SORT_REGULAR ,$files, SORT_DESC, SORT_REGULAR );
    }
    return $files;
}
 
 
// Use this function to display the directory contents.
function listFiles() {
    global $sort, $sortasc, $PHP_SELF, $dir;
    $files = getFiles($dir, $sort, $sortasc);
 
    if ($sortasc == "false" ) {
        $sortasc = "true";
    } else {
        $sortasc = "false";
    }
 
    $output .="      <table cellpadding=\"1\" cellspacing=\"0\">\n";
    $output .="         <tr>\n";
    $output .="            <td>\n";
    $output .="               <table width=\"100%\" cellpadding=\"1\" cellspacing=\"1\">\n";
    $output .="                  <tr>\n";
    $output .="                     <td>\n";
    $output .="                        <a href=\"$PHP_SELF?sort=lcfilename&sortasc=$sortasc\" title=\"sort by name\">filename</a>\n";
    $output .="                     </td>\n";
    $output .="                     <td>\n";
    $output .="                        <a href=\"$PHP_SELF?sort=filesize&sortasc=$sortasc\" title=\"sort by size\">size</a>\n";
    $output .="                     </td>\n";
    $output .="                     <td>\n";
    $output .="                        <a href=\"$PHP_SELF?sort=mimetype&sortasc=$sortasc\" title=\"sort by type\">type</a>\n";
    $output .="                     </td>\n";
    $output .="                     <td>\n";
    $output .="                        <a href=\"$PHP_SELF?sort=date&sortasc=$sortasc\" title=\"sort by date\">date</a>\n";
    $output .="                     </td>\n";
    $output .="                  </tr>";
    for($i=0; $i <= sizeof($files); $i++) {
        $output .= "    <tr> \n";
        $output .= "            <td> \n";
        $output .= "                    <a href=\"" .$dir.$files[key($files)]['filename']. "\">".$files[key($files)]['filename']."</a> \n";
        $output .= "            </td> \n";
        $output .= "            <td> \n";
        $output .= "                    ".$files[key($files)]['formattedsize']." \n";
        $output .= "            </td> \n";
        $output .= "            <td> \n";
        $output .= "                    ".$files[key($files)]['mimetype']." \n";
        $output .= "            </td> \n";
        $output .= "            <td> \n";
        $output .= "                    ".$files[key($files)]['formatteddate']." \n";
        $output .= "            </td> \n";
        $output .= "    </tr> \n";
        next($files);
    }
    $output .="\n               </table>\n";
    $output .="            </td>\n";
    $output .="         </tr>\n";
    $output .="      </table>\n";
    return $output;
}
 
 
$dir = "./"; // USE A TRAILING SLASH !
print listFiles();
 
?>
 
Le problème est que si je veux clicker sur un répertoire, pour y accéder, il manque un "/" à la fin. Voyez par vous meme: http://linux.tribucrew.org
Comme par exemple: Pour aller dans le dossier pics, il manque un "/" à la fin ( http://linux.tribucrew.org/pics )...
Si quelqu'un peut m'aider j'apprécierais beaucoup.
Merci!
Bye


Message édité par srv-_ le 07-05-2003 à 17:01:37
Reply

Marsh Posté le 07-05-2003 à 16:59:52   

Reply

Marsh Posté le 08-05-2003 à 17:05:18    

[:atreyu][:azzaro75]

Reply

Marsh Posté le 08-05-2003 à 19:28:57    

Code :
  1. <?
  2. // Get the mime types.
  3. $fd=fopen("/etc/mime.types","r" );
  4. while (!feof($fd)) {
  5.     $buf = trim(fgets($fd,1024));
  6.     if (strlen($buf) > 0) {
  7.         if (substr($buf,0,1) != "#" ) {
  8.             $tmp = preg_split("/[\s]+/", $buf, -1, PREG_SPLIT_NO_EMPTY);
  9.             $num = sizeof($tmp);
  10.             if ($num > 1) {
  11.                 for ($i=1;$i<$num;$i++) {
  12.                     if (strstr($tmp[$i],"#" )) {
  13.                     } else {
  14.                         $mime[$tmp[$i]]=strtolower(substr($tmp[0], 0, strpos($tmp[0], "/" )));
  15.                     }
  16.                 }
  17.             unset($tmp);
  18.             }
  19.         }
  20.     }
  21. }
  22. fclose($fd);
  23. function formatSize($bytes) {
  24.     if ($bytes > 1048576 ) {
  25.         $output  = sprintf("%." . 1 . "f", $bytes / 1048576 );
  26.         $output .= " Mb";
  27.     } elseif ($bytes > 1024 ) {
  28.         $output  = sprintf("%." . 0 . "f", $bytes / 1024 );
  29.         $output .= " Kb";
  30.     } else {
  31.         $output  = sprintf("%." . 0 . "f", $bytes );
  32.         $output .= " bytes";
  33.     }
  34.     return $output;
  35. }
  36. // Use this function to get the directory contents.
  37. function getFiles($dir = "", $sort = "type", $sortasc) {
  38.     global $mime;
  39.     clearstatcache();
  40.     $files = array();
  41.     $handle = @opendir($dir);
  42.     while(($file = readdir($handle)) !== false) {
  43.         if($file != "." && $file != ".." ) {
  44.             $files[$file]['filename'] = $file;
  45.             $files[$file]['lcfilename'] = strtolower($file);
  46.             $files[$file]['filesize'] = fileSize($dir.$file);
  47.             $files[$file]['date'] = filectime($dir.$file);
  48.             $files[$file]['type'] = substr(strrchr($file, "." ), 1);
  49.             $files[$file]['size'] = filesize($dir.$file);
  50.             $files[$file]['mimetype'] = $mime[substr(strrchr($file, "." ), 1)];
  51.             $files[$file]['formattedsize'] = formatSize(filesize($dir.$file));
  52.             $files[$file]['formatteddate'] = date("j/n/y G:i", filectime($dir.$file));
  53.         }
  54.     }
  55.     closedir($handle);
  56.     foreach ($files as $val) {
  57.         $sortarray[] = $val[$sort];
  58.     }
  59.     if ($sortasc == "true" || !isset($sortasc)) {
  60.         array_multisort($sortarray,SORT_ASC, SORT_REGULAR ,$files, SORT_ASC, SORT_REGULAR );
  61.     } else {
  62.         array_multisort($sortarray,SORT_DESC, SORT_REGULAR ,$files, SORT_DESC, SORT_REGULAR );
  63.     }
  64.     return $files;
  65. }
  66. // Use this function to display the directory contents.
  67. function listFiles() {
  68.     global $sort, $sortasc, $PHP_SELF, $dir;
  69.     $files = getFiles($dir, $sort, $sortasc);
  70.     if ($sortasc == "false" ) {
  71.         $sortasc = "true";
  72.     } else {
  73.         $sortasc = "false";
  74.     }
  75.     $output .="      <table cellpadding=\"1\" cellspacing=\"0\">\n";
  76.     $output .="         <tr>\n";
  77.     $output .="            <td>\n";
  78.     $output .="               <table width=\"100%\" cellpadding=\"1\" cellspacing=\"1\">\n";
  79.     $output .="                  <tr>\n";
  80.     $output .="                     <td>\n";
  81.     $output .="                        <a href=\"$PHP_SELF?sort=lcfilename&sortasc=$sortasc\" title=\"sort by name\">filename</a>\n";
  82.     $output .="                     </td>\n";
  83.     $output .="                     <td>\n";
  84.     $output .="                        <a href=\"$PHP_SELF?sort=filesize&sortasc=$sortasc\" title=\"sort by size\">size</a>\n";
  85.     $output .="                     </td>\n";
  86.     $output .="                     <td>\n";
  87.     $output .="                        <a href=\"$PHP_SELF?sort=mimetype&sortasc=$sortasc\" title=\"sort by type\">type</a>\n";
  88.     $output .="                     </td>\n";
  89.     $output .="                     <td>\n";
  90.     $output .="                        <a href=\"$PHP_SELF?sort=date&sortasc=$sortasc\" title=\"sort by date\">date</a>\n";
  91.     $output .="                     </td>\n";
  92.     $output .="                  </tr>";
  93.     for($i=0; $i <= sizeof($files); $i++) {
  94.         $output .= "    <tr> \n";
  95.         $output .= "            <td> \n";
  96.         $output .= "                    <a href=\"" .$dir.$files[key($files)]['filename'].'/'. "\">".$files[key($files)]['filename']."</a> \n";
  97.         $output .= "            </td> \n";
  98.         $output .= "            <td> \n";
  99.         $output .= "                    ".$files[key($files)]['formattedsize']." \n";
  100.         $output .= "            </td> \n";
  101.         $output .= "            <td> \n";
  102.         $output .= "                    ".$files[key($files)]['mimetype']." \n";
  103.         $output .= "            </td> \n";
  104.         $output .= "            <td> \n";
  105.         $output .= "                    ".$files[key($files)]['formatteddate']." \n";
  106.         $output .= "            </td> \n";
  107.         $output .= "    </tr> \n";
  108.         next($files);
  109.     }
  110.     $output .="\n               </table>\n";
  111.     $output .="            </td>\n";
  112.     $output .="         </tr>\n";
  113.     $output .="      </table>\n";
  114.     return $output;
  115. }
  116. $dir = "./"; // USE A TRAILING SLASH !
  117. print listFiles();
  118. ?>


 
Voilà une soluce

Reply

Marsh Posté le 09-05-2003 à 01:16:03    

MERCI splurf
 
Mon sauveur!! Un gros merci, enfin sa fonctionne!!  :bounce:  :)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed