N Nilson Medlem sedan aug. 2000 168 inlägg Frågan 14 aug. 2002 20:24 #1 jag skulle vilja kunna designa sidan man får när man gör en .htaccess-fil med Options +Indexes
Hur skulle motsvarande sak kunna uppnås med några rader php där man kan designa sidan själv?
N Nilson Medlem sedan aug. 2000 168 inlägg jag har funnit att man kan lösa det på följande sätt. men hur blir man av med ./ och ../ och index.php
(se http://www.wasted.org/hultsfred )
<?php
$site_name="Directory Browser";
$dir_path="/home/httpd/vhosts/wasted.org/httpdocs/";
$dir_url="hultsfred/";
?>
<html>
<head>
<title>Directory List</title>
</head>
<body>
<h1>Directory Listing for <?php echo $site_name; ?></h1>
<p>
<?php
$dir=opendir($dir_path);
while($file=readdir($dir))
{
echo"<a href=\"".$dir_url.$file."\" target=\"blank\">$file</a><br>\n";
}
closedir($dir);
?>
</body>
</html>
N Nilson Medlem sedan aug. 2000 168 inlägg Är det verkligen inte någon som kan det här? :q
S SPiN Medlem sedan mars 2000 7 896 inlägg while($file=readdir($dir))
{
echo"<a href=\"".$dir_url.$file."\" target=\"blank\">$file</a><br>\n";
}
>>
while($file=readdir($dir))
{
if( $file != "./" || $file != ".\\" || $file != "../" || $file != "..\\" || $file != "index.php" ) {
echo"<a href=\"".$dir_url.$file."\" target=\"blank\">$file</a><br>\n";
}
}
Bör fungera.
N Nilson Medlem sedan aug. 2000 168 inlägg Det blev precis om innan bara att en del filer hoppade upp/ner i listan. Jag blir galen på det här snart! x(
S SPiN Medlem sedan mars 2000 7 896 inlägg Nytt försök. Ändrar lite i din loop också, den är fel.
while(false !== ( $file=readdir($dir) ))
{
if( $file != "." && $file != ".." && $file != "index.php" )
echo"<a href=\"".$dir_url.$file."\" target=\"blank\">$file</a><br>\n";
}
Var nog för nyvaken när jag skrev förra inlägget. Det här SKA fungera. :)
N Nilson Medlem sedan aug. 2000 168 inlägg Woho! Tack!
(bara en lite grejj. nu öppnar den filen i ett nytt fönster. försökte ändra blank/ till top/ men det fungerade inte för att öppna i samma fönster - någon idé om varför?)
det hemliga receptet blev alltså:
<?php
$site_name="Directory Browser";
$dir_path="/home/httpd/vhosts/wasted.org/httpdocs/hultsfred";
$dir_url="hultsfred/";
?>
<html>
<head>
<title>Directory List</title>
</head>
<body>
<h1>Directory Listing for <?php echo $site_name; ?></h1>
<p>
<?php
$dir=opendir($dir_path);
while(false !== ( $file=readdir($dir) ))
{
if( $file != "." && $file != ".." && $file != "index.php" )
echo"<a href=\"".$file."\" target=\"blank\">$file</a><br>\n";
}
closedir($dir);
?>
</body>
</html>
S SPiN Medlem sedan mars 2000 7 896 inlägg Jäpp. :)
Jag hade, klantig som jag är, använt mig av eller-operatorn ( || ) istället för och-operatorn ( && ). Och så hade jag ju lagt till lite "slashar", som inte skulle vara där.
N Nilson Medlem sedan aug. 2000 168 inlägg Ok jag fixxade det. för att ändra till att filen öppnar i samma fönster ändrar man
target=\"blank\"
till
target=\"_self\"
TACK SPiN! :h
N Nilson Medlem sedan aug. 2000 168 inlägg Listan på filer är inte i 100%-ig bokstavsordning. Hur fixxar jag till det?
S SPiN Medlem sedan mars 2000 7 896 inlägg Så här lätt:
<?php
$dir=opendir($dir_path);
while(false !== ( $file=readdir($dir) ))
{
if( $file != "." && $file != ".." && $file != "index.php" )
$directoryArray[] = $file;
}
sort( $directoryArray );
while( $curElement = array_shift( $directoryArray ) )
echo"<a href=\"". $curElement ."\" target=\"blank\">" . $curElement . "</a><br>\n";
closedir($dir);
?>
N Nilson Medlem sedan aug. 2000 168 inlägg det fungerade fint. bara det att den favoriserar filer med versaler och listar dem i alfa-ordning, och filer med gemener för efter.
https://www.wasted.org/hultsfred
en liten petitess men kan man komma runt det?
(egentligen skulle det vara tufft om man också kunde hämta datum för när filen senast modiferiades och storlek också - men det vet jag inte heller hur man trollar till. (så det mer ser ut som https://www.wasted.org/arvika alltså.))
S SPiN Medlem sedan mars 2000 7 896 inlägg Hm, jag kan lösa så att du får det i rätt alfabetisk ordning, alltså A räknas som a, men att kolla senaste ändringar, osv. får du lösa själv. :)
<?php
$dir=opendir($dir_path);
while(false !== ( $file=readdir($dir) ))
{
if( $file != "." && $file != ".." && $file != "index.php" )
$orgDirectoryArray[] = $file;
$gemDirectoryArray[] = strtolower( $file );
}
sort( $gemDirectoryArray );
foreach( $gemDirectoryArray as $intIndex => $strFile ) {
echo "<a href=\"" . $orgDirectoryArray[ $intIndex ] . "\">" . $orgDirectoryArray[ $intIndex ] . "</a><br />";
}
closedir($dir);
?>
Det borde funka.
N Nilson Medlem sedan aug. 2000 168 inlägg det senaste snutten gjorde det hela bara värre. men det spelar ingen roll. tack för all hjälp. ;)
S SPiN Medlem sedan mars 2000 7 896 inlägg Det kanske inte går att göra så med en foreach(), förresten.
Byt ut:
foreach( $gemDirectoryArray as $intIndex => $strFile ) {
echo "<a href=\"" . $orgDirectoryArray[ $intIndex ] . "\">" . $orgDirectoryArray[ $intIndex ] . "</a><br />";
}
Mot:
for( $i = 0; $i < count( $gemDirectoryArray ); $i++ ) {
echo "<a href=\"" . $orgDirectoryArray[ $i ] . "\">" . $orgDirectoryArray[ $i ] . "</a><br />";
}