Info:
Ik ben de laatste dagen bezig met een directory browser in PHP. Na een aantal zoekacties op hotscripts.com en gathering.tweakers.net heb ik zelf een php-script samengesteld.
Echter deze geeft bij het browsen van de mappen wat fouten.
Er moet voor het te openen bestand altijd een script worden geplaatst te weten: run:
Het php-script staat in de apache map op de windows nt server. De directory waarin gebrowsed mag worden staat op de gedeelde schijf p:.
Dit browsen lukt maar de bestanden die aanklikbaar zijn hebben niet het volledige pad als link.
Voorbeeld:
- script staat in http://localhost/php/browser.php
- directory p:/documenten/
- bestand wordt nu weergegeven als: run:p:bestand.pdf maar moet worden run:p:/documenten/bestand.pdf
- dit geldt ook voor bestanden die dieper in de mappen geplaatst zijn
Probleem:
- Links werken dus niet
- Bovenaan de lijst moet ook nog een soort navigatie komen zodat men direct kan linken naar een bovenstaande map of de home map ( home / documenten / test ) moeten dus apart aanklikbaar zijn. Dit heb ik geprobeerd met de $updir maar deze geeft dan het gehele pad weer en dit wil ik graag in aparte stukken zoals hierboven
Script:
Andere scripts op het internet werken wel maar missen weer bepaalde dingen die ik wil zoals het plaatsen van run: voor de link, mappen structuur bovenaan weergeven als menu. Vandaar dat ik zelf ben gaan schrijven maar ik kom er niet meer uit
Ik ben de laatste dagen bezig met een directory browser in PHP. Na een aantal zoekacties op hotscripts.com en gathering.tweakers.net heb ik zelf een php-script samengesteld.
Echter deze geeft bij het browsen van de mappen wat fouten.
Er moet voor het te openen bestand altijd een script worden geplaatst te weten: run:
Het php-script staat in de apache map op de windows nt server. De directory waarin gebrowsed mag worden staat op de gedeelde schijf p:.
Dit browsen lukt maar de bestanden die aanklikbaar zijn hebben niet het volledige pad als link.
Voorbeeld:
- script staat in http://localhost/php/browser.php
- directory p:/documenten/
- bestand wordt nu weergegeven als: run:p:bestand.pdf maar moet worden run:p:/documenten/bestand.pdf
- dit geldt ook voor bestanden die dieper in de mappen geplaatst zijn
Probleem:
- Links werken dus niet
- Bovenaan de lijst moet ook nog een soort navigatie komen zodat men direct kan linken naar een bovenstaande map of de home map ( home / documenten / test ) moeten dus apart aanklikbaar zijn. Dit heb ik geprobeerd met de $updir maar deze geeft dan het gehele pad weer en dit wil ik graag in aparte stukken zoals hierboven
Script:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
| <? function Check_For_Slash($path) { if (substr($path, (strlen($path) - 1), 1) != "/") { $path = $path . "/"; } return($path); } function updir( $path ) { $last = strrchr( $path, "/" ); $n1 = strlen( $last ); $n2 = strlen( $path ); return substr( $path, 0, $n2-$n1 ); } echo "<TABLE WIDTH='90%' BORDER='0' CELLPADDING='0' CELLSPACING='0'>\n"; echo "<TR>\n"; echo "<TD CLASS='titel' WIDTH='80%'>Omschrijving</TD>\n"; echo "<TD CLASS='titel' WIDTH='20%'>Datum</TD>\n"; echo "</TR>\n"; function Get_Directory_Listing($path) { $base_dir = $_SERVER["DOCUMENT_ROOT"]; $base_dir = Check_For_Slash($base_dir); if ($dir_handle = opendir($base_dir . $path)) { while ($file = readdir($dir_handle)) { $path = Check_For_Slash($path); if (($file != ".") && ($file != "..")) { chdir($base_dir . $path); if (is_dir($file)) { $upload = filemtime($file); $uploaddatum = date("j - n - Y ", $upload); print("<TR>\n"); print("<TD CLASS='bestand' WIDTH='80%' ALIGN='left'> [img]'http://nt-klaveren/beta2/martijn/images/folder.bmp'></IMG[/img] <A HREF='" . $_SERVER["PHP_SELF"] . "?PATH=" . $path . $file . "'> " . $file . "</A> </TD>\n"); print("<TD CLASS='datum' WIDTH='20%' ALIGN='right'></TD>\n"); print("</TR>\n"); } } } closedir($dir_handle); $d = dir($path); print ("\n"); print ("<br><a href=$ref >Home</a>\n"); $updir = updir($d->path); if( $updir != "." ) print ("<br>Up dir; <a href=$ref?Folder=$updir>$updir</a>\n"); print ("<br>cd: <a href=$ref?cd=".$d->path."/..>..</a>\n"); print ("<br>Chemin: <b>".$d->path."</b>\n"); } if ($dir_handle = opendir($base_dir . $path)) { while ($file = readdir($dir_handle)) { $path = Check_For_Slash($path); chdir($base_dir. $path); if (($file != ".") && ($file != "..")) { if (is_file($file)) { $upload = filemtime($file); $uploaddatum = date("j - n - Y ", $upload); $link = "http://" . $_SERVER['SERVER_NAME'] . $_SERVER['PHP_SELF']; $link = explode("/", $link); array_pop($link); array_pop($link); $link = @implode($link, "/"); print("<TR>\n"); print("<TD CLASS='bestand' WIDTH='80%' ALIGN='left'> <A HREF='run:p:".$d->path."" . $file . "'> "); if (substr($file, strlen($file) - 3, 3) == "xls") { print("[img]'http://nt-klaveren/beta2/martijn/images/excel.bmp'[/img]"); } elseif(substr($file, strlen($file) - 3, 3) == "doc") { print("[img]'http://nt-klaveren/beta2/martijn/images/word.bmp'[/img]"); } elseif(substr($file, strlen($file) - 3, 3) == "pdf") { print("[img]'http://nt-klaveren/beta2/martijn/images/pdf.bmp'[/img]"); } else { print("[img]'http://nt-klaveren/beta2/martijn/images/website.bmp'[/img]"); } print(" " . $file . "</IMG></A></TD>\n"); print("<TD CLASS='datum' WIDTH='20%' ALIGN='right'> " . $uploaddatum . " </TD>\n"); print("</TR>\n"); } } } closedir($dir_handle); } } if (!IsSet($_GET["PATH"])) { $_GET["PATH"] = "../../../Portaldocu/"; } Get_Directory_Listing($_GET["PATH"]); ?> |
Andere scripts op het internet werken wel maar missen weer bepaalde dingen die ik wil zoals het plaatsen van run: voor de link, mappen structuur bovenaan weergeven als menu. Vandaar dat ik zelf ben gaan schrijven maar ik kom er niet meer uit