Missa inte! Fyndchans i Månadens Drop

Php script som listar alla filer i en mapp?

Permalänk
Sötast

Php script som listar alla filer i en mapp?

Skulle vilja komma över ett phpscript som listar alla filer i en mapp, något liknande directorylisting, någon av ser som vet?

Permalänk

Första träffen på google:

function dir_list($dir) { $dl = array(); if ($hd = opendir($dir)) { while ($sz = readdir($hd)) { if (preg_match("/^\./",$sz)==0) $dl[] = $sz; } closedir($hd); } asort($dl); return $dl; }

Permalänk
Sötast

Då ska jag säga att du har redig tur eller nåt, för jag fick bara en bra träff på google, å det var inte ens på första sidan.. sen visade det sig inte fungera alls heller

Permalänk

Kom ihåg när du söker att man oftast särskriver i engelskan. Det heter alltså "php script" och "directory listing".

Permalänk
Medlem

Eller så söker man på php.net.
Dir räcker det att skriva där.

Visa signatur

Asus P5K-Premium WiFi | Intel Core2Quad Q6600 @ 3.3Ghz | 4x2GB OCZ Platinum | Radeon HD6950GB | Intel SSD 160GB

Permalänk
Sötast

... kunde tydligen ändå itne förstå hur man skulle skriva dom för att få dom att funka...

är bara "lite" noob på php

ingen som kan ta ett av dom scripten å fixa ihopa det i en färdig fungerande fil?

filerna måste såfall vara klickbara.

Permalänk
Medlem

<?php if ($hd = opendir('c:\')) { while (($file = readdir($dh)) !== false) { echo $file . "<br />"; } closedir($hd); } ?>

Bara att klippa och klistra in koden där du vill att filnamnen ska skrivas ut.
Du kanske vill ändra 'c:\' till den mapp du vill "leta" igenom.

Visa signatur

Citera mig om du vill att jag ska hitta tillbaka!

Permalänk
Sötast

Notice: Undefined variable: dh in d:\web\www\1.php on line 4

Warning: readdir(): supplied argument is not a valid Directory resource in d:\web\www\1.php on line 4

Permalänk
Citat:

Ursprungligen inskrivet av Allexz
Notice: Undefined variable: dh in d:\web\www\1.php on line 4

Warning: readdir(): supplied argument is not a valid Directory resource in d:\web\www\1.php on line 4

Du skulle ha tjänat en del om du läst koden en gång.

Korrekt kod (med kommentar var felet var):

<?php if ($hd = opendir('c:')) { while (($file = readdir($hd)) !== false) // det stog $dh innan { echo $file . "<br />"; } closedir($hd); } ?>

Läste även att du ville ha klickbara länkar, så här kommer en modifikation:

<?php if ($hd = opendir('c:')) { while (($file = readdir($hd)) !== false) // det stog $dh innan { echo "<a href=\"". $file ."\">". $file ."</a><br />"; } closedir($hd); } ?>

Visa signatur

Permalänk
Sötast
Citat:

Ursprungligen inskrivet av swejihad
Du skulle ha tjänat en del om du läst koden en gång.

Korrekt kod (med kommentar var felet var):

<?php if ($hd = opendir('c:')) { while (($file = readdir($hd)) !== false) // det stog $dh innan { echo $file . "<br />"; } closedir($hd); } ?>

Läste även att du ville ha klickbara länkar, så här kommer en modifikation:

<?php if ($hd = opendir('c:')) { while (($file = readdir($hd)) !== false) // det stog $dh innan { echo "<a href=\"". $file ."\">". $file ."</a><br />"; } closedir($hd); } ?>

Ahh! problemet var ju just det att jag inte förstår mkt alls på php.. mer än att jag kanske kan ändra något färdigt script minimalt.... började leka med det förrigår

så "dh" kunde betyda vad som helst för mig.. visste inte vad jag skulle leta efter

Men tack som fan för scriptet iafl... nu kan jag bygga på lite härifrån å så... blir nog ett bra första projekt tror jag

Permalänk
Citat:

Ursprungligen inskrivet av Allexz

Ahh! problemet var ju just det att jag inte förstår mkt alls på php.. mer än att jag kanske kan ändra något färdigt script minimalt.... började leka med det förrigår

så "dh" kunde betyda vad som helst för mig.. visste inte vad jag skulle leta efter

Men tack som fan för scriptet iafl... nu kan jag bygga på lite härifrån å så... blir nog ett bra första projekt tror jag

Om du är så färsk så rekomenderar jag att börjar läsa php manulaen (står hur man använder och skriver php-script), börja härifrån

Vill du sedan kolla upp en funktion i php skriver du: http://php.net/funktionens_namn

Visa signatur

Permalänk
Sötast

hmm tack för länkarna... försökte söka upp en funktion som gör att "index.php" döljs från fil listan som scriptet skapade.... vet dock inte riktigt vad jag ska söka på, eller hur jag skulle 'lägga ihopa' den nya funktionen med det gamla scriptet... nån mer som har ett tips? .)

Permalänk

<?php if ($hd = opendir('c:')) { while (($file = readdir($hd)) !== false) { if ($file != 'index.php') // skriver ut filen om det inte är index.php echo "<a href='$file'>$file</a><br />"; closedir($hd); } ?>

Permalänk
Medlem

Hur skriver man detta i asp då?

Visa signatur

Samsung TFT 22" 2233RZ Svart 120HZ - 640GB Western Digital Black 64MB SATA III - Corsair 4GB (2x2048MB) 1333MHz XMS3-10600 - AMD Phenom2 X4 965 3,4GHz Black Edition - Gigabyte GeForce GTX 460 1GB OC - Fractal Design Define R3, Svart - Corsair TX 650W 80+ - Gigabyte GA-870A-UD3 - Cooler Master Hyper 212 Plus

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av Allexz
Ahh! problemet var ju just det att jag inte förstår mkt alls på php.. mer än att jag kanske kan ändra något färdigt script minimalt.... började leka med det förrigår

så "dh" kunde betyda vad som helst för mig.. visste inte vad jag skulle leta efter

Men tack som fan för scriptet iafl... nu kan jag bygga på lite härifrån å så... blir nog ett bra första projekt tror jag

Som sagt, du borde läsa någon guide som hjälper dig igenom det allra ytligaste i PHP så du åtminstonde vet vad en variabel och funktion är för något.

Permalänk
Medlem

Denna tycker jag är jäkligt smindig. Man får dessutom en dospromt och man kan köra program på servern.
http://freshmeat.net/projects/phpfilemanager/

Permalänk
Sötast
Citat:

Ursprungligen inskrivet av vigge89

<?php if ($hd = opendir('c:')) { while (($file = readdir($hd)) !== false) { if ($file != 'index.php') // skriver ut filen om det inte är index.php echo "<a href='$file'>$file</a><br />"; closedir($hd); } ?>

Tackar för den du hade gjort en miss i texten, och jag lyckades hitta det Felsökning för noobs

men på min nivå låter det så ologiskt.. men det är väl för att jag inte förstår vad kommandona betyder egentligen... om jag skulle översätta den nya raden rakt av tså tycker jag den säger...

om filen är index.php så ska den echoa den... men det är mitt sätt å se på det

skoj som fan att man får lite hjälp, mycket roligare att lära sig bland trevligt folk

Permalänk
Medlem

!= betyder ej lika med.

Permalänk
Sötast

AHA
har även bytt ut

if ($hd = opendir('C:\blablabla'))

mot

if ($hd = opendir('./')) det tar sig

Edit:

ville göra en sak som verkar bli smått avancerat.

detta scriptet skapar alla filer i "en" lista.... kan det då vara möjligt, att man gör ett table, där jag vill ha varje länk, i en egen row?

Permalänk
Medlem

Menar du så här?

<?php if ($hd = opendir('.')) { echo "<table>\n"; while (($file = readdir($hd)) !== false) if ($file != 'index.php') // skriver ut filen om det inte är index.php echo "<tr><td><a href='$file'>$file</a></td></tr>\n"; echo '</table>'; closedir($hd); } ?>

Permalänk
Sötast
Citat:

Ursprungligen inskrivet av CC01
Menar du så här?

<?php if ($hd = opendir('.')) { echo "<table>\n"; while (($file = readdir($hd)) !== false) if ($file != 'index.php') // skriver ut filen om det inte är index.php echo "<tr><td><a href='$file'>$file</a></td></tr>\n"; echo '</table>'; closedir($hd); } ?>

Hah, fan va det svider att vara så totalt ägd, men får skylla mig själv eftersom jag inte "läste läxan"

Permalänk
Medlem

Använder i grunden samma teknik som ni diskuterar, fast med en massa mer funktionallitet, i mitt FTP-interface. Design och kod är separerat så det är väldigt lätt att ändra designen.

Filerna ligger inte åtkomliga från webrooten, utan adressen man läser/skriver i adressfältet skickas via mod_rewrite till ett script (/index.php) som sedan listar filerna i en katalog, om målet är en katalog, eller skickar filen till användaren om målet är en fil.

http://ftp.krangparty.se/pub/krangparty/krangparty-11/

Permalänk
Sötast

ja.. gör mig avis på ditt vackra arkiv gör det

Permalänk
Medlem

Har tänkt släppa det som GPL-kod i framtiden, det mesta jag kodar släpper jag fritt. Måste dock fina till koden en hel del så att jag kan stå för det.
Under tiden kan jag ju alltid ge lite tips, det är nämligen inte alltför mycket kod som behövs...

Permalänk
Medlem

Jag får väl komma med något också antar jag ... innan tajson bräcker oss med han vackra script...

<html> <head> <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" /> <title>Directory Lister</title> </head> <body> <table border="0" cellspacing="0" cellpadding="0"> <?php function directoryLister() { //Denna variabel kan man ändra för att lista andra mappar, på detta sätt kan man enkelt skapa ett eget "ftp" system genom att kanske sätta defaultdir = request..... $default_dir = "./"; if(!($dp = opendir($default_dir))) die("Cannot open $default_dir."); //Lista alla filerna OCH mapparna i $default_dir while($file = readdir($dp)) $filenames[] = $file; closedir($dp); sort($filenames); $count = 0; for($i=0; $i < count($filenames); $i++) { //hantera bara mappar... som INTE startar med punkter eller bindestreck if ( is_dir($filenames[$i]) && !preg_match('/^\./',$filenames[$i]) && !preg_match('/^\-/',$filenames[$i]) ) { //lägg allt i en tabell med två kolumner... if($count%2 == 0) { echo "<tr><td width=\"250\"><a href=\"" . rawurlencode($filenames[$i]) . "\">". $filenames[$i] . "</a></td>\n"; } else { echo "<td width=\"250\"><a href=\"" . rawurlencode($filenames[$i]) . "\">". $filenames[$i] . "</a></td></tr>\n"; } $count++; } } //avsluta sista raden i kolumn 2 om den inte blev fylld... if ($count%2 == 1) { echo "<td width=\"250\"></td></tr>\n"; } } directoryLister(); ?> </table> </body> </html>

Tog bort två div:ar som jag hade missat från mitt orginal-script ... pröva den kod som står nu ...

jag kör med det på www.mounte.net/Gallery
tillfälligt tills jag orkar fixa till det ännu bättre ...

Visa signatur

weeeee

Permalänk
Medlem

mounte: jag får inte fram något på ditt script

Visa signatur

Jag hatar att vara förkyld!

Permalänk
Permalänk
Sötast
Citat:

Ursprungligen inskrivet av vigge89
http://vigge.ath.cx/filelist.php

Huff! Creds till dig på den designen, snyggt!

ända som är lite synd är "Desktop.ini type: ini"

skulle varit snyggare om man hade döljt .ini i den första raden...

eller så är det jag som petar eftersom jag är så avundsjuk

Permalänk
Citat:

Ursprungligen inskrivet av Allexz
Huff! Creds till dig på den designen, snyggt!

ända som är lite synd är "Desktop.ini type: ini"

skulle varit snyggare om man hade döljt .ini i den första raden...

eller så är det jag som petar eftersom jag är så avundsjuk

Ville ha filtypen kvar, för det första så visar den ju filnamnet, och till filnamnet räknas ju egentligen filtypen in. Dessutom tycker jag att det blir snyggare om man inkluderar ändelsen samt att man lättare kan skilja mellan mappar och filer.

Angående ditt PM, jag skriver det här istället utifall att någon annan vill ha reda på hur man kan skriva ut storleken på filerna:

<?php $directory = './'; // måste sluta med ett slash if ($dir = opendir ($directory)): // öppna mappen skriptet körs i echo "<table>\n"; while (($file = readdir ($dir)) !== false): if ($file != 'index.php'): // skriver ut filen om det inte är index.php $filesize = @filesize ($directory.$file); // ta reda på filstorleken // $filnamn | $filstorlek bytes echo "<tr><td><a href='$file'>$file</a></td><td>$filesize bytes</td></tr>\n"; endif; endwhile; echo '</table>'; closedir ($dir); endif; ?>

Permalänk
Sötast

så hmm... hur gör man nu för att få det till kb? =p

edit:
ugh.. börjar bli jobbigt nu.... skulle börja med att ha skoj å lära sig massa.. känns som man bara leechar kod av alla nu :S

hm.. får något fel på raden

bytes</td></tr>\n";

--> endif;

echo '</table>';