Ett femminutershack såhär på morgonkvisten. Något att börja med kanske?
<?
$dir = "./";
$dh = opendir($dir);
while ( $filename = readdir($dh) ) {
echo $filename."<br>\n";
}
closedir($handle);
?>
6 svar · 366 visningar · startad av bassebhu
Hej alla glada!
Har precis fått igång en lokal server med php-stöd :e
Jag skulle vilja på ett enkelt sätt skriva ut samtliga mappar och filer som finns i en bestämd mapp med hjälp av php. Detta för att jag ska kunna se mina filer med namn även om jag inte är hemma. Det är ingen share-server på gång alltså, då hade jag inte startat en webbserver ;)
Någon som har ett litet php-script liggandes?
Ett exempel på hur jag vill ha det:
Jag går in på min sida. Där loopas alla mappnamn ut som ligger i en viss mapp på min dator. Detta är steg ett... Svar hur jag kommer hit til att börja med uppskattas :)
Sen är det tänkt att man ska kunna navigera precis som på datorn. Man kan öppna mappen och komma till nästa nivå och sedan till olika filer osv.
Om någon sitter på ett schysst script för att radda upp samliga filer i en mapp (även i undermappar) på nåt snyggt kategoriserat sätt så tas det också emot med stor tacksamhet :)
Mvh, biten
Ett femminutershack såhär på morgonkvisten. Något att börja med kanske?
<?
$dir = "./";
$dh = opendir($dir);
while ( $filename = readdir($dh) ) {
echo $filename."<br>\n";
}
closedir($handle);
?>
Något du kanske kan arbeta vidare på:
<?php
// Startkatalog för filer, utgå från skriptet
// Ange katalog UTAN avslutande /
$path = './bilder';
// Kolla att GET-variabel finns, annars sätt defaultvärde
$dir = isset($_GET['dir']) ? trim($_GET['dir']) : '';
// För hindra att man kan gå uppåt i katalogstrukturen
$dir = str_replace("../", "", $dir);
// Kolla att katalog existerar
if (!file_exists($path.'/'.$dir) || !is_dir($path.'/'.$dir)) {
$dir = '';
}
// Hämta katalog- och filnamn
$files = array_merge(get_files($path, $dir, true), get_files($path, $dir));
// Skriv ut filnamnen
echo "<table>\n";
foreach ($files as $file) {
echo '
<tr>
<td><a href="'.$file['link'].'">'.$file['name'].'</a></td>
<td style="text-align:'.$file['align'].'">'.$file['size'].'</td>
</tr>
';
}
echo "</table>";
function get_files($path, $dir, $isdir=false) {
$files = array();
if ($handle = opendir($path.'/'.$dir)) {
while (false !== ($file = readdir($handle))) {
if ($file != "." && $file != ".." && is_dir($path.'/'.$dir.'/'.$file) === $isdir) {
if ($isdir) {
$dirname = preg_replace("/^[\\.\\/]*/", "", $dir.'/'.$file);
$link = $_SERVER['PHP_SELF']."?dir=$dirname";
$filesize = '[DIR]';
$align = 'left';
} else {
$link = "$path/$dir/$file";
$link = preg_replace("/\\/+/", "/", $link);
$filesize = number_format(filesize($path.'/'.$dir.'/'.$file), 0, ',', ' ');
$align = 'right';
}
$files[] = array('name'=>$file, 'link'=>$link, 'size'=>$filesize, 'align'=>$align);
}
}
closedir($handle);
sort($files);
// Om vi ej är i startkatalogen, lägg till länk till katalog över
if ($isdir && !empty($dir)) {
$dirname = preg_replace("/^[\\.\\/]*/", "", dirname($dir));
$overdir[] = array('name'=>'..', 'link'=>$_SERVER['PHP_SELF'].'?dir='.$dirname, 'size'=>'[DIR]', 'align'=>'left');
$files = array_merge($overdir, $files);
}
}
return $files;
}
?>
Schysst, ska testa ikväll :D
Bra skript Matte! Jag snor det på en gång... :)
// För hindra att man kan gå uppåt i katalogstrukturen
$dir = str_replace("../", "", $dir);
bör utökas med:
$dir = ($dir == '..') ? '' : $dir;
så man inte själv kan skriva in ?dir=..