Erreur dans mon script?!?! - Codes et scripts - Linux et OS Alternatifs
MarshPosté 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);
// Use this function to display the directory contents. function listFiles() { global $sort, $sortasc, $PHP_SELF, $dir; $files = getFiles($dir, $sort, $sortasc);
$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
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