Har en kod som ser ut såhär, funkar alla tiders.
bara det att man inte kan gå in i katalogerna som listas fram
<?php
define( SELFNAME, basename($SCRIPT_NAME));
define( SELFPATH, dirname($SCRIPT_NAME));
define( DATE_FORMAT, "d-M-Y H:i");
//define( ALLOWED_EXT, ".gif.jpg.jpeg.png.");
define( DENIED_EXT, ".htm.html.phtml.php.php3.");
define( SHOW_DIR, TRUE);
$D = substr_replace( $D, '', 0, strspn( $D, './\\')); // ocisti zaciatok
$D = strrev($D);
$D = substr_replace( $D, '', 0, strspn( $D, './\\')); // ocisti koniec
$D = strrev($D);
$D = strtr( str_replace( '..', '', $D), '\\', '/'); // este vo vnutri
if ($D != '')
{
if (!defined('SHOW_DIR') || !is_dir($D))
{
header( "HTTP/1.0 404 Not Found");
die( "<html><body><b>\nOoops!<br>\nNo such directory in current scope.</b>\n</body></html>"); // niekto nas skusa ;-)
}
$parent = substr( $D, 0, strrpos( $D, '/'));
if ($parent != '')
$parent .= '/';
else
unset($parent);
$D .= '/';
}
else
{
unset($D);
}
//header( "Expires: " . gmdate("D, d M Y H:i:s") . " GMT");
header( "Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<html>
<head>
<title>index of <?php if (strlen(SELFPATH) > 1) echo SELFPATH; echo '/'.$D.' at '.$SERVER_NAME ?></title>
<meta name="Description" content="generated directory listing">
<meta name="author" content="(c) martinko 2001 / ga-mato.host.sk">
</head>
<body>
<h2>Index of /<?php
if (strlen(SELFPATH) > 1)
echo substr( SELFPATH, 1, strrpos( SELFPATH, '/')) . '<a href="'.SELFNAME.'">' . substr( SELFPATH, strrpos( SELFPATH, '/') + 1) . '</a>/';
echo dir_expand( $D, '');
?></h2>
<pre>
<?php
$dirlist = array();
$dir = dir( ($D!='') ? "$D" : ".");
while (($entry = $dir->read()) !== FALSE)
{
if (defined('SHOW_DIR') && is_dir($D.$entry))
{
if (($entry != ".") && !(($entry == "..") && ($D == ""))) // not (this or root_parent)
$dirlist[] = array( 'name' => $entry, 'size' => "<DIR>", 'time' => filemtime($D.$entry));
}
if (is_file($D.$entry))
{
if (is_allowed_ext( strrchr( $entry, '.')))
$dirlist[] = array( 'name' => $entry, 'size' => filesize($D.$entry), 'time' => filemtime($D.$entry));
}
}
$dir->close();
foreach ($dirlist as $entry)
{
if ($entry['size'] == "<DIR>")
{
echo "<a href=\"".SELFNAME;
if ($entry['name'] == "..")
{
if ($parent != '')
echo "?D=" . urlencode( substr( $parent, 0, -1));
}
else
{
echo "?D=" . urlencode( $D.$entry['name']);
}
echo
"\">[" . htmlspecialchars( $entry['name']) . "]</a>" .
str_pad( '', 30 - 2 - strlen($entry['name'])) .
htmlspecialchars( str_pad( $entry['size'], 10, ' ', STR_PAD_LEFT)) . "\t" .
htmlspecialchars( date( DATE_FORMAT, $entry['time'])) . "\n";
}
}
foreach ($dirlist as $entry)
{
if ($entry['size'] != "<DIR>")
{
echo
"<a href=\"$D$entry[name]\">" . htmlspecialchars( $entry['name']) . "</a>" .
str_pad( '', 30 - strlen($entry['name'])) .
htmlspecialchars( str_pad( size_format( $entry['size']), 10, ' ', STR_PAD_LEFT)) . "\t" .
htmlspecialchars( date( DATE_FORMAT, $entry['time'])) . "\n";
}
}
echo "</pre>\n-<br><i><small>".gmdate("D, d M Y H:i:s").' UTC from <a href="http://'.$SERVER_NAME.":".$SERVER_PORT.'" title="'.gethostbyname($SERVER_NAME).'">'.$SERVER_NAME."</a> port ".$SERVER_PORT."</small></i>\n";
?>
</body>
</html>
<?php
function dir_expand ($dir, $base)
{
if ($dir != '')
{
$dl = strcspn( $dir, '/\\');
$ds = substr( $dir, 0, $dl);
$bs = ($base!='') ? $base.'/'.$ds : $ds;
$return .= '<a href="'.SELFNAME.'?D='.urlencode($bs).'">'.$ds.'</a>';
$ts = substr( $dir, $dl);
$sl = strspn( $ts, '/\\');
$return .= substr( $ts, 0, $sl);
$return .= dir_expand( substr( $ts, $sl), $bs);
}
return $return;
}
function is_allowed_ext ($ext)
{
$return = TRUE;
if (!empty($ext))
{
$ext .= '.';
if (defined('ALLOWED_EXT'))
if (stristr( ALLOWED_EXT, $ext) == FALSE)
$return = FALSE;
if (defined('DENIED_EXT'))
if (stristr( DENIED_EXT, $ext) != FALSE)
$return = FALSE;
}
else
{
if (defined('ALLOWED_EXT'))
$return = FALSE;
}
return $return;
}
function size_format ($num)
{
if (is_int($num))
$num = ceil($num/1024).'K';
return $num;
}
?>
Någon som kanske har en aning om vart felet ligger?
Tacksam för svar.