Filhanterare [Gratis]

PHPportalen Forum Index » Tips och Trix
Lägg ett bokmärke på hela tråden
Skapa nytt inlägg   Svara på inlägget
Visa föregående ämne :: Visa nästa ämne  
Startad av: Meddelande
BlauskaerM



Medlem i: 4995 dagar
Från: Järfälla
Status: Offline



#646737
Inlägg Skrivet: 2009-07-15 15:30      Ämne: Filhanterare [Gratis] Citera

[Filhanterare]
Vet egentligen inte om man får göra såhär men vill ge er som precis har börjat med PHP något att bita i.
Det här är ett skript som letar upp filer i en katalog och har möjligheten att behandlar dem olika beroende på vad de har för filändelse.
De som skulle vela ha det och kanske fortsätta med det får gärna ta en CTRL+C.

[Anvädning]
Om ni kopierar koden rakt från tråden så spara koden i en ny fil och kalla den för MediaView.php (Mycket viktigt, annars så kommer det inte att funka).
När ni väl har fått ner koden så öppnar ni er webbläsare och skriver in URL:en (serverIP)/MediaView.php?M=(katalogen som ni vill titta i)

Exempel: Om jag vill kolla i samma katalog som MediaView.php ligger i så skickar jag med argumentet . (Punkt!) i M som betyder den aktuella katalogen som Mediaview.php befinner sig i.
Eller om ni till en annan katalog så sätter ni M lika med den sökvägen som katalogen har.
Så om katalogen Test finns i samma mapp som MediaView.php finns så sätter ni M=Test.
Kom ihåg att sökvägen måste utgå ifrån där MediaView.php ligger.

Hoppas att skriptet kan komma till någon användning för er, lycka till!

KOD:
1:
<html>
2:
<!-- Erik wiktorsson (NTI-Gymnasiet 04-07) design SBL -->
3:
<head>
4:
<title>MEDIAVIEW</title>
5:
</head>
6:
<body>
7:
<center>
8:
<?php
9:
/*
10:
*Metod för att sätt rätt storleksprefix till filens storlek.
11:
*/
12:
function sizeOfFile($size, $precision = 0)
13:
{
14:
   switch($size)
15:
   {
16:
      case $size > 1000000000:
17:
      return round($size / 1000000000, $precision)."GB";
18:
      break;
19:
      case $size > 1000000:
20:
      return round($size / 1000000, $precision)."MB";
21:
      break;
22:
      case $size > 1000:
23:
      return round($size / 1000, $precision)."kB";
24:
      break;
25:
      case $size < 1000:
26:
      return $size."B";
27:
   }
28:
}
29:
 
30:
/*
31:
*Mainframe.
32:
*Skapar typ-arrayerna och url:en
33:
*/
34:
 
35:
$location = $_GET['M'];
36:
$pictures;
37:
$vidos;
38:
$directorys;
39:
$music;
40:
 
41:
if(isset($_GET['M']))   //Argumentalgoritm för url:en. Variablen M måste finnas [#]
42:
{
43:
 
44:
      $kh = @opendir($location);   //Skapra kopplingen till mappen.
45:
      while(false !== (@readdir($kh)))   //Om det finns filer att läsa från mappen så gör innehållet i while-satsen.
46:
      {
47:
            $file = @readdir($kh);
48:
 
49:
               if(!($file=="." || $file==".." || $file=="Thumbs.db"))   //Om objectet inte är ".", ".." eller "Thumps.db" så kör if-satsen.
50:
              {
51:
               /*
52:
               *Variabler och url:en skapas för intagande object.
53:
               *Funktioner för att ta fram information om objectet.
54:
               *Så som om objectet är en mapp.
55:
               */
56:
               $fileLocate         = $location."/".$file;
57:
               $open             = @fopen($fileLocate, "r");
58:
               $fileStat           = @fstat($open);
59:
               $path_parts         = @pathinfo($fileLocate);
60:
               $dirTest          = $path_parts['dirname']."/".$path_parts['basename'];   //tar fram sökvägen till objectet [path.to.file]/[filename].
61:
               $fileTypeIcon      = @strtolower($path_parts['extension']); //plockar fram filetypen av objectet.
62:
 
63:
                  switch($fileTypeIcon)   //Switch sats för att behandla objectet.
64:
                  {
65:
                        case "jpg":
66:
                        case "bmp":
67:
                        $pictures[] = '<td><a href="'.$fileLocate.'">'.$file.' ['.sizeOfFile($fileStat[size]).']</a></td>';
68:
                        break;
69:
 
70:
                        case "wmv":
71:
                        case "avi":
72:
                        case "mpg":
73:
                        $vidos[]   = '<td><a href="'.$fileLocate.'">'.$file.' ['.sizeOfFile($fileStat[size]).']</a></td>';
74:
                        break;
75:
 
76:
                        case "mp3":
77:
                        case "wav":
78:
                        $music[]   = '<td><a href="'.$fileLocate.'">'.$file.' ['.sizeOfFile($fileStat[size]).']</a></td>';
79:
                        break;
80:
                  }
81:
 
82:
               if(is_dir($dirTest))   //Om objectet inte tillhör ovanstående typ, så testas om objectet är en mapp. Isåfall så behanlas objectet som en mapp.
83:
               {
84:
               $directorys[] = '<td><a href="Mediaview.php?M='.$dirTest.'">'.$file.'</a></td>';
85:
               }
86:
 
87:
            }
88:
      }
89:
      @closedir($kh);   //Stänger kopplingen till mappen.
90:
 
91:
         /*
92:
          *Innehållet i typ-arrayerna behandlas i nedstående stycke.
93:
          *Om antal element i typ-arrayen är över noll, så skrivs filerna ut med en radbrytning vad 4:e rad.
94:
          */
95:
 
96:
         $sizeOfPictures      = count($pictures);
97:
         $sizeOfMusic      = count($music);
98:
         $sizeOfVideos      = count($vidos);
99:
         $sizeOfDirectorys   = count($directorys);
100:
         $ROWBREAK         = 4;
101:
 
102:
         if($sizeOfPictures > 0)
103:
         {
104:
            $i = 0;
105:
            echo '<table border="1"><tr><td colspan="4">Pictures</td></tr><tr>';
106:
            foreach($pictures as $P)
107:
            {
108:
               if($i % $ROWBREAK == 0 && $i != 0)
109:
               {
110:
                  echo "</tr><tr>"."\n";
111:
               }
112:
               echo $P."\n";
113:
               $i++;   
114:
            }
115:
            echo "</tr></table><br />"."\n";
116:
         }
117:
 
118:
         if($sizeOfMusic > 0)
119:
         {
120:
            $i= 0;
121:
            echo '<table border="1"><tr><td colspan="4">Music</td></tr><tr>';
122:
            foreach($music as $M)
123:
            {
124:
               if($i % $ROWBREAK == 0 && $i != 0)
125:
               {
126:
                  echo "</tr><tr>"."\n";
127:
               }
128:
               echo $M."\n";
129:
               $i++;   
130:
            }
131:
            echo "</tr></table><br />"."\n";
132:
         }
133:
 
134:
         if($sizeOfVideos > 0)
135:
         {
136:
            $i = 0;
137:
            echo '<table border="1"><tr><td colspan="4">Films</td></tr><tr>';
138:
            foreach($vidos as $V)
139:
            {
140:
               if($i % $ROWBREAK == 0 && $i != 0)
141:
               {
142:
                  echo "</tr><tr>"."\n";
143:
               }
144:
               echo $V."\n";
145:
               $i++;
146:
            }
147:
            echo "</tr></table><br />"."\n";
148:
         }
149:
 
150:
         if($sizeOfDirectorys > 0)
151:
         {
152:
            $i = 0;
153:
            echo '<table border="1"><tr><td colspan="4">Directorys</td></tr><tr>';
154:
            foreach($directorys as $D)
155:
            {
156:
               if($i % $ROWBREAK == 0 && $i != 0)
157:
               {
158:
                  echo "</tr><tr>"."\n";
159:
               }
160:
               echo $D."\n";
161:
               $i++;   
162:
            }
163:
            echo "</tr></table><br />"."\n";
164:
         }
165:
 
166:
 
167:
         if(($sizeOfPictures + $sizeOfVideos + $sizeOfDirectorys + $sizeOfMusic) == 0)   //Om summan av antalet element i typ-arrayerna är lika med 0 så är mappen tom.
168:
         {
169:
            echo '<center>Katalogen kan ej hittas eller är för närvarande tom.</center>';
170:
         }
171:
 
172:
}
173:
 
174:
else{
175:
   echo '<center>Invalit katalog namn!</center>';   //Om ovanstående argumentsalgoritm [#] inte stämmer så behandlas innehållet i variablen M som ett invalit argument.
176:
   }
177:
?>
178:
</center>
179:
</body>
180:
</html>
181:
<?php flush() ?>
182:
<?php ob_flush() ?> 
183:
 


Senast ändrad av BlauskaerM den 2009-07-15 15:38, ändrad totalt 2 gånger
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande Besök användarens hemsida MSN Messenger
hallis



Medlem i: 6063 dagar
Från: Stockholm
Status: Offline



#646738
Inlägg Skrivet: 2009-07-15 15:32      Ämne: Citera

jaha?
 

_________________
Utvecklingsbloggen
Till toppen på sidan
Visa användarprofil Skicka privat meddelande Besök användarens hemsida
BlauskaerM



Medlem i: 4995 dagar
Från: Järfälla
Status: Offline



#646739
Inlägg Skrivet: 2009-07-15 15:34      Ämne: Citera

Vänta, sidan vill inte visa mitt inlägg
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande Besök användarens hemsida MSN Messenger
Azreal
Administratör



Medlem i: 5159 dagar
Från: Uppsala, bor i Göteborg
Status: Offline



#646740
Inlägg Skrivet: 2009-07-15 15:36      Ämne: Citera

Det är en bug med php-taggen, jag har redigerat inlägget med code-taggen istället.

Dock så kommer tråden att flyttas till Tips och trix
 

_________________
Konsultation via PM, inte gratis.
Till toppen på sidan
Visa användarprofil Skicka privat meddelande Besök användarens hemsida
BlauskaerM



Medlem i: 4995 dagar
Från: Järfälla
Status: Offline



#646741
Inlägg Skrivet: 2009-07-15 15:36      Ämne: Citera

Taget, lås tråd
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande Besök användarens hemsida MSN Messenger
hallis



Medlem i: 6063 dagar
Från: Stockholm
Status: Offline



#646748
Inlägg Skrivet: 2009-07-15 16:13      Ämne: Citera

Jag har inte gått igenom skriptet men vad händer om jag skriver in /etc som mapp-namn och kör en unix-grund?
 

_________________
Utvecklingsbloggen
Till toppen på sidan
Visa användarprofil Skicka privat meddelande Besök användarens hemsida
BlauskaerM



Medlem i: 4995 dagar
Från: Järfälla
Status: Offline



#646770
Inlägg Skrivet: 2009-07-15 20:57      Ämne: Citera

Eftersom skriptet bara än sålänge kan hantera mappar, två bild ändelser och lite musik så kommer det förmodligen bara att lisa ut mapparna i /etc mappen.

Man kan tycka att det är ett stort säkerhetshål men skriptet här mycket grundligt. Det är fullt möjligt som jag använde det till att låsa det till en viss mapp.
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande Besök användarens hemsida MSN Messenger
EmilV
Ex-Moderator



Medlem i: 6168 dagar
Från: Lilla Edet
Status: Offline



#648219
Inlägg Skrivet: 2009-07-29 15:49      Ämne: Citera

Skriptet är lite buggigt. Till exempel växlar det om till KB, MB och GB för tidigt. En KB är 1024 byte, en MB är 1024 KB etc.
 

_________________
Tänk!

EmilVikström.se | Bloglovin.com
Till toppen på sidan
Visa användarprofil Skicka privat meddelande Besök användarens hemsida
Keke



Medlem i: 5438 dagar
Från: Trollhättan
Status: Offline



#649437
Inlägg Skrivet: 2009-08-09 09:26      Ämne: Citera

EmilV skrev:
Skriptet är lite buggigt. Till exempel växlar det om till KB, MB och GB för tidigt. En KB är 1024 byte, en MB är 1024 KB etc.

Nej, En kB är 1000 byte, en MB är 1 000 000 byte. Däremot är en KiB 1024 byte, en MiB 1 048 576 byte osv...
http://sv.wikipedia.org/wiki/Byte_(enhet)
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande Besök användarens hemsida
WizKid
Ex-Moderator



Medlem i: 6442 dagar
Från: Stockholm
Status: Offline



#649438
Inlägg Skrivet: 2009-08-09 10:38      Ämne: Citera

Keke: Ja du har rätt men tittar du på en dator använder de 1024. Därför vore det ju rätt rimligt att ett program som petar med filer gör samma sak.
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande Besök användarens hemsida ICQ-nummer
Keke



Medlem i: 5438 dagar
Från: Trollhättan
Status: Offline



#649551
Inlägg Skrivet: 2009-08-10 10:11      Ämne: Citera

WizKid skrev:
Keke: Ja du har rätt men tittar du på en dator använder de 1024. Därför vore det ju rätt rimligt att ett program som petar med filer gör samma sak.

Jo, det är sant.
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande Besök användarens hemsida
nazzat



Medlem i: 5320 dagar

Status: Offline



#685519
Inlägg Skrivet: 2010-08-09 11:01      Ämne: Citera

Hej,

Tänkte testa detta script för ett enkelt ändamål, problemet är att jag får det endast att lista kataloger, sen när jag går in i en katalog som jag vet innehåller bilder så är det helt tomt.

Dessutom får jag detta:

KOD:
1:
 
2:
Notice: Undefined variable: pictures in C:\wamp\www\MediaView.php on line 96
3:
 
4:
Notice: Undefined variable: music in C:\wamp\www\MediaView.php on line 97
5:
 
6:
Notice: Undefined variable: vidos in C:\wamp\www\MediaView.php on line 98
7:
Directorys
8:
test
9:
 


Men är det så att man måste göra någon serverinställning för att apache skall tillåta scriptet att lista filer eller liknande? Jag använder senaste versionen av Wamp
 

_________________
Alla är vi nån gång noobs. Frågan är bara när var och hur vi var det!
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
hallis



Medlem i: 6063 dagar
Från: Stockholm
Status: Offline



#685524
Inlägg Skrivet: 2010-08-09 11:54      Ämne: Citera

nazzat skrev:
Dessutom får jag detta:

KOD:
1:
 
2:
Notice: Undefined variable: pictures in C:\wamp\www\MediaView.php on line 96
3:
 
4:
Notice: Undefined variable: music in C:\wamp\www\MediaView.php on line 97
5:
 
6:
Notice: Undefined variable: vidos in C:\wamp\www\MediaView.php on line 98
7:
Directorys
8:
test
9:
 


För att variablerna inte sätts korrekt. Kolla rad 36, 37, 38 och 39.
 

_________________
Utvecklingsbloggen
Till toppen på sidan
Visa användarprofil Skicka privat meddelande Besök användarens hemsida
Teodor



Medlem i: 4109 dagar
Från: Stockholm
Status: Offline



#685525
Inlägg Skrivet: 2010-08-09 12:01      Ämne: Citera

Vad är det du vill göra? Är det inte enklare att skriva ett eget litet script än att försöka få igång ett gammalt script från över ett inlägg för över ett år sedan?

Ta en titt på glob(); Mycket smidig funktion!
 

_________________
teodor.se
Till toppen på sidan
Visa användarprofil Skicka privat meddelande Besök användarens hemsida
nazzat



Medlem i: 5320 dagar

Status: Offline



#685571
Inlägg Skrivet: 2010-08-09 17:56      Ämne: Citera

Anledningen till att jag provade var att jag först och främst ville ha ett lite snabbt för en speciell sak.

Jo, jag vet vad felet beror på och det är för att variablerna inte sätts. Men om du kikar på scriptet ovan så är det så.

Det enda sättet att få de till ett värde är om jag skapar en katalog med bilder i, filmer i osv. osv.

Annars får man det felet.

Dessutom är det som så att har jag en katalog med en bild, så visas den inte, utan det måste finnas två bilder och då visas bara den ena, detsamma gäller med kataloger osv.

Och hade jag verkligen suttit med tid övers hade jag självklart kikat på att göra ett eget, känner mig dessutom alldeles för ringrostig då jag inte gjort något i PHP på ett par år tror jag.

Vad gäller glob() så kikade jag nu som hastigast.. Hur ska man få den att fungera i ett helt katalogträ utan att behöva ha små php-filer i varje katalog som listar innehållet ?
 

_________________
Alla är vi nån gång noobs. Frågan är bara när var och hur vi var det!
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
Visa tidigare inlägg:   
Skapa nytt inlägg   Svara på inlägget
PHPportalen Forum Index » Tips och Trix
Hoppa till:  
Du kan inte skapa nya inlägg i det här forumet
Du kan inte svara på inlägg i det här forumet
Du kan inte ändra dina inlägg i det här forumet
Du kan inte ta bort dina inlägg i det här forumet
Du kan inte rösta i det här forumet
Du kan inte bifoga filer i detta forum
Du kan inte ladda ner filer från detta forum
Kontakta oss på adressen: info@phpportalen.net
Webbplatsen bygger i grunden på phpBB © 2001, 2002 phpBB Group

Modifieringar har senare gjorts i systemet av PHPportalen
Sid och logotypdesign skapad av Daren Jularic