login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Filemanager!

Offline Erwt - 26/01/2005 17:05 (laatste wijziging 26/01/2005 17:55)
Avatar van ErwtPHP beginner Hej, ik heb een filemanager van wmcity af gehaalt, maar nu staat er bij anderen ook: F:
server
map
map5
bijv. Ik wil graag dat ze alleen de map zien waar ze in zitten! dus alle dingen in de CURRENT map! wie weet hoe ik zowiets verander?

  1. <?php
  2. // file icons
  3. $icons['audio'] = array('mp3','wma','mov','avi','mpg','mpeg','wmv','asf');
  4. $icons['html'] = array('htm','html');
  5. $icons['psd'] = array('psd');
  6. $icons['zip'] = array('rar','zip','ace');
  7. $icons['word'] = array('doc','rtf');
  8. $icons['excel'] = array('xsl');
  9. $icons['ppt'] = array('ppt');
  10. $icons['script'] = array('js');
  11. $icons['pdf'] = array('pdf');
  12. $icons['fla'] = array('fla','swf');
  13. $icons['exe'] = array('exe');
  14. $icons['txt'] = array('txt');
  15. $icons['eps'] = array('eps','ai');
  16.  
  17. // max. search time
  18. if(isset($_POST['t']) && is_numeric($_POST['t'])) {
  19. set_time_limit($_POST['t']);
  20. }
  21. // downloadfunctie
  22. function download($file){
  23. $filename = basename($file);
  24. header("Content-Type: application/force-download");
  25. if(strstr($_SERVER["HTTP_USER_AGENT"], "MSIE")){
  26. header("Content-Disposition: filename=$filename");
  27. }else{
  28. header("Content-Disposition: attachment; filename=$filename");
  29. }
  30. $fp = fopen($file,'r');
  31. fpassthru($fp);
  32. }
  33.  
  34. // Stopwatch
  35. function getParseTime() {
  36. list($usec, $sec) = explode(" ",microtime());
  37. return ((float)$usec + (float)$sec);
  38. }
  39.  
  40. // functie voor aantal keer spaties
  41. function getSpace($i,$string){
  42. $string .= '&nbsp;&nbsp;';
  43. return ($i == 0)? $string : getSpace(--$i,$string);
  44. }
  45.  
  46. // Pathlink
  47. function getPathLink($cu) {
  48. $pathLink = '';
  49. $link = '';
  50. $cu = str_replace('./',str_replace(basename($_SERVER["SCRIPT_FILENAME"]),'',$_SERVER["SCRIPT_FILENAME"]),$cu);
  51. $path = explode('/',$cu);
  52. for($i=0; $i < count($path); $i++) {
  53. $link .= $path[$i].'/';
  54. $space = getSpace($i,'');
  55. $pathLink .= $path[$i] == '' ? '' : $space . '<a href="'.$_SERVER['PHP_SELF'].'?cu='.$link.'">'.
  56. '<img src="http://www.rolandboon.com/browser/folder.gif" width="16" height="16" alt="" /> '.
  57. basename($link).'</a><br />';
  58. }
  59. return $pathLink;
  60. }
  61.  
  62. function getUpLink($cu) {
  63. $pathLink = '';
  64. $link = '';
  65. $cu = str_replace('./',str_replace(basename($_SERVER["SCRIPT_FILENAME"]),'',$_SERVER["SCRIPT_FILENAME"]),$cu);
  66. $path = explode('/',$cu);
  67. for($i=0; $i < count($path)-2; $i++) {
  68. $link .= $path[$i].'/';
  69. }
  70. //print $link;
  71. return $_SERVER['PHP_SELF'].'?cu='.$link;
  72. }
  73. // Folderarray
  74. function getFolderArray($path, $name) {
  75. $result['name'] = $name;
  76. $result['fullPath'] = $path;
  77. $result['changeDate'] = filemtime($path);
  78. $result['size'] = count(glob($path.'/*'));
  79. $result['type'] = 'File Folder';
  80. $result['dimension'] = null;
  81. return $result;
  82. }
  83. // Filearray
  84. function getFileArray($path, $name) {
  85. $result['name'] = $name;
  86. $result['fullPath'] = $path;
  87. $result['changeDate'] = filemtime($path);
  88. $result['size'] = filesize($path);
  89. $result['type'] = getFileType($name);
  90. $result['dimension'] = getImgSize($path,$result['type']);
  91. return $result;
  92. }
  93. // Filetype uit Filename halen
  94. function getFileType($name) {
  95. $tmp = explode('.',$name);
  96. return strtolower($tmp[count($tmp) -1]);
  97. }
  98. // Afbeeldingafmetingen uit Filepath halen
  99. function getImgSize($path,$type) {
  100. if(@getimagesize($path)) {
  101. list($width, $height, $type, $attr) = getimagesize($path);
  102. return $width.' x '.$height;
  103. }
  104. else {
  105. return null;
  106. }
  107. }
  108. // Sorteerfunction voor 2D arrays
  109. function sortFileList($sortArray,$sortField,$sortOrder) {
  110. $sortKey = array();
  111. foreach($sortArray as $row) {
  112. $sortKey[] = $row[$sortField];
  113. }
  114. array_multisort($sortKey,$sortOrder,$sortArray);
  115. return $sortArray;
  116. }
  117. // Bytes naar andere bytes
  118. function calcSize($size) {
  119. if($size > 1024 * 1024 * 1024){
  120. $gb = ceil(($size * 10) / 1024 / 1024 / 1024) / 10;
  121. return ceil($size / 1024 / 1024 / 1024).' Gb';
  122. }
  123. elseif($size > 1024 * 1024) {
  124. $mb = ceil(($size * 10) / 1024 / 1024) / 10;
  125. return $mb.' Mb';
  126. }
  127. elseif($size < 1024) {
  128. return ceil($size).' Bytes';
  129. }
  130. else {
  131. return ceil($size / 1024).' Kb';
  132. }
  133. }
  134.  
  135. // zoek door de map en eventueel onderliggende mappen
  136. function doSearch($path,$query,$deep,$folders,$files) {
  137. if(substr($path,-1) != '/') {
  138. $path .= '/';
  139. }
  140. foreach(glob($path.'*'.$query.'*') as $file) {
  141. if(is_dir($file)) {
  142. $folders[] = getFolderArray($file,basename($file));
  143. }
  144. else {
  145. $files[] = getFileArray($file, basename($file));
  146. }
  147. }
  148. if($deep == true) {
  149. foreach(glob($path.'*') as $file) {
  150. if(is_dir($file)) {
  151. list($folders,$files) = doSearch($file,$query,true,$folders,$files);
  152. }
  153. }
  154. }
  155. return array($folders,$files);
  156. }
  157.  
  158. // genereer html voor het zoekgedeelte
  159. function searchHead($folders,$files,$cu){
  160. if(isset($_POST['q']) && isset($_POST['all'])){
  161. return 'De zoekopdracht voor <b>'.$_POST['q'].'</b> leverde de volgende '
  162. .count($folders).' mappen en '.count($files).' bestanden op';
  163. }
  164. else{
  165. return '<form method="POST" action="'.$_SERVER['PHP_SELF'].'?cu='.$cu.'">'
  166. .'search for: <input type="text" name="q" size="50" /> <input type="submit" value="go" /><br />'
  167. .'max. time: <input type="text" name="t" size="2" value="20" /> sec.&nbsp;&nbsp;&nbsp;&nbsp;'
  168. .'<input type="radio" id="simple" name="all" value="false" checked="checked" /><label for="simple">only this folder</label>'
  169. .'<input type="radio" id="deep" name="all" value="true" /><label for="deep">including subdirectory\'s</label></form>';
  170. }
  171. }
  172. // eerst even kijken of er iets gedownload moet worden
  173. isset($_GET['dl']) && download($_GET['dl']);
  174.  
  175. // Even de variabelen zetten
  176. $start = getParseTime();
  177. $totalSize = 0;
  178. $folders = array();
  179. $files = array();
  180. $cu = isset($_GET['cu']) ? $_GET['cu'] : './';
  181.  
  182. // alle mappen en files in een variabele stoppen als er geen search is gedaan
  183. if(!(isset($_POST['q']) && isset($_POST['all']))){
  184. foreach(glob($cu.'*') as $file) {
  185. if(is_dir($file)) {
  186. $folders[] = getFolderArray($file,basename($file));
  187. }
  188. else {
  189. $files[] = getFileArray($file, basename($file));
  190. }
  191. }
  192. }else{
  193. list($folders, $files) = doSearch($cu,$_POST['q'],$_POST['all'],$folders,$files);
  194. }
  195.  
  196. $orderLink['name'] = 'asc';
  197. $orderLink['size'] = 'asc';
  198. $orderLink['type'] = 'asc';
  199. $orderLink['changeDate'] = 'asc';
  200. $orderLink['dimension'] = 'asc';
  201.  
  202. if(isset($_GET['sort'])) {
  203. $sortField = in_array($_GET['sort'],array('name','size','type','changeDate','dimension')) ? $_GET['sort'] : 'name';
  204.  
  205. $order = SORT_ASC;
  206. if(isset($_GET['order'])) {
  207. if($_GET['order'] == 'desc') {
  208. $order = SORT_DESC;
  209. }
  210. else {
  211. $orderLink[$sortField] = 'desc';
  212. }
  213. }
  214.  
  215. $folders = sortFileList($folders,$sortField,$order);
  216. $files = sortFileList($files,$sortField,$order);
  217. }
  218.  
  219.  
  220. print'<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  221. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
  222. <head>
  223. <title>'.$cu.'; File Browser 1.10 by Pentjer &amp; Boontje</title>
  224.  
  225. </head>
  226. <!--
  227. Filebrowser 1.10
  228. (c) Pentjer & Boontje
  229.  
  230. Gratis en op eigen risico te gebruiken. Niet voor commercieel gebruik.
  231.  
  232. Verdere ontwikkeling van het script mag mits de makers Pentjer en Boontje worden vermeld.
  233.  
  234. Have fun!
  235. -->
  236. <body>
  237. <table cellspacing="0">
  238. <thead>
  239. <tr>
  240. <td id="title" colspan="5"><span class="logo"><img src="http://www.rolandboon.com/browser/logo.gif" width="20" height="19" alt=";)" /></span></td>
  241. </tr>
  242. <tr>
  243. <td id="control" colspan="5">
  244. <a href="javascript:history.go(-1)"><img src="http://www.rolandboon.com/browser/back.gif" width="23" height="23" alt="Back" /></a>
  245. <a href="javascript:history.go(+1)"><img src="http://www.rolandboon.com/browser/forward.gif" width="23" height="23" alt="Forward" /></a>
  246. <a href="'.getUpLink($cu).'"><img src="http://www.rolandboon.com/browser/up.gif" width="23" height=23"" alt="Up" /></a>
  247. <a href="javascript:history.go()"><img src="http://www.rolandboon.com/browser/refresh.gif" width="23" height=23"" alt="Refresh" /></a>
  248. </td>
  249. </tr>
  250. <tr>
  251. <td class="pathLink" valign="top">
  252. '.getPathLink($cu).'
  253. </td>
  254. <td class="search" colspan="4">
  255. '.searchHead($folders,$files,$cu).'
  256. </td>
  257. </tr>
  258. <tr>
  259. <td id="nameHead"><a href="'.$_SERVER['PHP_SELF'].'?cu='.$cu.'&amp;sort=name&amp;order='.$orderLink['name'].'">Name</a></td>
  260. <td id="sizeHead" align="right"><a href="'.$_SERVER['PHP_SELF'].'?cu='.$cu.'&amp;sort=size&amp;order='.$orderLink['size'].'">Size</td>
  261. <td id="typeHead"><a href="'.$_SERVER['PHP_SELF'].'?cu='.$cu.'&amp;sort=type&amp;order='.$orderLink['type'].'">Type</td>
  262. <td id="changeHead"><a href="'.$_SERVER['PHP_SELF'].'?cu='.$cu.'&amp;sort=changeDate&amp;order='.$orderLink['changeDate'].'">Date Modified</td>
  263. <td id="dimHead" align="right"><a href="'.$_SERVER['PHP_SELF'].'?cu='.$cu.'&amp;sort=dimension&amp;order='.$orderLink['dimension'].'">Dimensions</td>
  264. </tr>
  265. </thead>';
  266.  
  267. // loop door de mappen
  268. foreach($folders as $folder){
  269. print'
  270. <tr>
  271. <td class="name"><img src="http://www.rolandboon.com/browser/folder.gif" width="16" height="16" alt="" /> <a href="'.$_SERVER['PHP_SELF'].'?cu='.$folder['fullPath'].'/">'.$folder['name'].'</a></td>';
  272. if($folder['size'] == 1) {
  273. print'
  274. <td align="right"><nobr>'.$folder['size'].' item</nobr></td>';
  275. }
  276. else {
  277. print'
  278. <td align="right"><nobr>'.$folder['size'].' items</nobr></td>';
  279. }
  280. print'
  281. <td><nobr>'.$folder['type'].'</nobr></td>
  282. <td><nobr>'.date('j-n-Y G:i',$folder['changeDate']).'</nobr></td>
  283. <td align="right">&nbsp;</td>
  284. </tr>';
  285. }
  286.  
  287. // loop door de bestanden
  288. foreach($files as $file) {
  289.  
  290. $icon = 'file';
  291. foreach($icons as $iconName => $iconRange) {
  292. if(in_array($file['type'],$iconRange)) {
  293. $icon = $iconName;
  294. }
  295. }
  296. print'
  297. <tr>
  298. <td class="name"><nobr>
  299. <img src="http://www.rolandboon.com/browser/'.$icon.'.gif" width="16" height="16" alt="" /> <a href="'.$file['fullPath'].'">'.$file['name'].'</a>
  300. <a href="'.$_SERVER['PHP_SELF'].'?cu='.$cu.'&dl='.$file['fullPath'].'" class="dl"><img src="http://home.uva.nl/mark.kroon/download.gif" width="10" height="10" alt="Download" /></a></nobr></td>
  301. <td align="right"><nobr>'.calcSize($file['size']).'</nobr></td>
  302. <td><nobr>'.$file['type'].'</nobr></td>
  303. <td><nobr>'.date('j-n-Y G:i',$file['changeDate']).'</nobr></td>
  304. <td align="right"><nobr>'.$file['dimension'].'&nbsp;</nobr></td>
  305. </tr>';
  306. $totalSize += $file['size'];
  307. }
  308.  
  309. // stop de klok
  310. $end = getParseTime();
  311. $parseTime = round($end-$start,4);
  312. $aantal = count($folders) + count($files);
  313. echo '
  314. <tr>
  315. <td class="status"><nobr>'.$aantal.' Objects</nobr></td>
  316. <td class="status" align="right"><nobr>'.calcSize($totalSize).'</nobr></td>
  317. <td class="status" colspan="3" align="right"><nobr>'.$parseTime.' sec</nobr></td>
  318. </tr>
  319. </table>
  320. </body>
  321. </html>';
  322. ?>

twopeak edit: ik heb de style weggedaan, want het was te lang... ga strakkies ff naar kijken!

7 antwoorden

Gesponsorde links
Offline twopeak - 26/01/2005 17:29 (laatste wijziging 26/01/2005 18:00)
Avatar van twopeak Gouden medaille

PHP ver gevorderde
je gaat ginder rommel halen (en ik herhaal: rommel) en dan mogen wij het fixen?

Wat heb je zelf al geprobeerd?
Wat denk jij dat je moet veranderen?
Waar denk jij dat je die variabelen moet veranderen?


Pfff, xtreeem lang & inneficiënt script...
Wat doet het nu?
En wat wil je hebben? (dat limiteerd mijn zoektijd)

Als je neit wilt dat hij in submappen zoekt, dan moet je in deze functie iets gaan verandern
  1. <?
  2. // zoek door de map en eventueel onderliggende mappen
  3. function doSearch($path,$query,$deep,$folders,$files) {
  4. if(substr($path,-1) != '/') {
  5. $path .= '/';
  6. }
  7. foreach(glob($path.'*'.$query.'*') as $file) {
  8. if(is_dir($file)) {
  9. $folders[] = getFolderArray($file,basename($file));
  10. }
  11. else {
  12. $files[] = getFileArray($file, basename($file));
  13. }
  14. }
  15. if($deep == true) {
  16. foreach(glob($path.'*') as $file) {
  17. if(is_dir($file)) {
  18. list($folders,$files) = doSearch($file,$query,true,$folders,$files);
  19. }
  20. }
  21. }
  22. return array($folders,$files);
  23. }
  24. ?>
Offline Erwt - 26/01/2005 17:34 (laatste wijziging 26/01/2005 18:21)
Avatar van Erwt PHP beginner Wat moet ik veranderen dan?:'(
Offline Joel - 26/01/2005 18:48
Avatar van Joel Eigenaar Als je scripts haalt van wmcity, en het werkt niet helemaal dan moet je daar uitleg gaan vragen vind ik.

Kijk eens op www.php.net wat je daar kunt vinden bij de functies.
Offline twopeak - 26/01/2005 20:11
Avatar van twopeak Gouden medaille

PHP ver gevorderde
Vond ik eerst ook, maar als zo'n script hier niet bestaat en dat j'm zelf niet kunt code dan moet j'm elders halen...
Het is een soort compliment dat hij hier hulp komt vragen 

Erwt;
wat gebeurt er nu, en wat wil je dat er gebeurt.
Persoonlijk wil ik niet heel het script gaan uitpluizen en analyseren (ik ben daar trouwens slecht in)
Maar als ik al weet wat er gebeurt en hoe je het liever zou zien, dan sta ik al een stap dichter...
Offline Erwt - 27/01/2005 09:21 (laatste wijziging 28/01/2005 09:03)
Avatar van Erwt PHP beginner Jup, ik vind dit te beste site...

Maar kijk, mensen zien de hele directory, waar de filemanager staat... dus de F:/ schijf en dan Server en dan Websites en dan Site1 en dan Filemanager! dat wil ik niet, ik wil dat hij bijv alleen in de map kijkt (en mag kijken) waar hij nu is... of waar ik (als het mogelijk zou zijn) kan aangeven in de broncode!

Niemand?:'(
Offline Thomas - 28/01/2005 15:34 (laatste wijziging 28/01/2005 15:35)
Avatar van Thomas Moderator Hier wordt waarschijnlijk je "uitgangspad" bepaald -->

  1. // Even de variabelen zetten
  2. ...
  3. $cu = isset($_GET['cu']) ? $_GET['cu'] : './'; // <-- hierzo


Die "./" wil zeggen: de root van je site. Deze zou je kunnen veranderen zodat je in een andere map begint, maar dit zal niet genoeg zijn omdat iemand gewoon een "directory omhoog" kan navigeren.

Je moet zeg maar 2 paden bij gaan houden: Een "intern pad" die het pad vanaf je DOCUMENT_ROOT bijhoudt, en een "extern (voor de gebruiker zichtbaar) pad". Stel dat het "interne pad" als volgt is:
"./files/"
Hier staan alle bestanden in die je wilt delen met andere gebruikers, en dit zou de enige folder moeten zijn waar iemand in kan kijken, dan is dit de 'root' van je "externe pad", oftewel "./files/" ziet een gebruiker als "/" - hier kan dus niet nog een folder omhoog gegaan worden omdat de gebruiker al in zijn 'root' zit.
Ik heb dit script vlug bekeken, maar het ziet er uit dat je zelf zo'n intern/extern pad systeem zult moeten bijmaken omdat het script hier geen ondersteuning aan biedt.

Ik ben het ook met twopeak eens dat wanneer je een script van elders haalt, je het hier niet ter debugging / voor extra wensen moet aanbieden... Stap er mee naar de makers, zou ik zeggen of pas het aan zoals ik voorstelde.
Offline Erwt - 30/01/2005 12:00
Avatar van Erwt PHP beginner Ok, hartstikke bedankt, ik zal contact met hun opnemen!
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.257s