webForumDet fria alternativet

Lista filer i kat. m. länkar t. dem.

PHP

15 svar · 413 visningar · startad av Nilson

Medlem sedan aug. 2000168 inlägg
Frågan#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?

Medlem sedan aug. 2000168 inlägg
#2

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>
Medlem sedan aug. 2000168 inlägg
#3

Är det verkligen inte någon som kan det här? :q

Medlem sedan mars 20007 896 inlägg
#4
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.

Medlem sedan aug. 2000168 inlägg
#5

Det blev precis om innan bara att en del filer hoppade upp/ner i listan. Jag blir galen på det här snart! x(

Medlem sedan mars 20007 896 inlägg
#6

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. :)

Medlem sedan aug. 2000168 inlägg
#7

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>
Medlem sedan mars 20007 896 inlägg
#8

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.

Medlem sedan aug. 2000168 inlägg
#9

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

Medlem sedan aug. 2000168 inlägg
#10

Listan på filer är inte i 100%-ig bokstavsordning. Hur fixxar jag till det?

Medlem sedan mars 20007 896 inlägg
#11

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); 
?>
Medlem sedan aug. 2000168 inlägg
#12

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å.))

Medlem sedan mars 20007 896 inlägg
#13

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.

Medlem sedan aug. 2000168 inlägg
#14

det senaste snutten gjorde det hela bara värre. men det spelar ingen roll. tack för all hjälp. ;)

Medlem sedan mars 20007 896 inlägg
#15

Värre? :q
Hur då? :o

Medlem sedan mars 20007 896 inlägg
#16

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 />";
}
271 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
121 ms — deklarationer (db)
0 ms — hämta statistik (cache)
145 ms — hämta tråd, inlägg och bilagor (db)
124 ms — ändringar (db)