File management system
. <- Root dir
- PHPHulp <- Dir
-- Centreren Div Horizontaal <- Dir
--- css <- Dir
---- style.css
--- index.php
-- test <- Dir
- Voorbeeld <- Dir
-- ran.php
Mijn huidig script:
Code (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
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
<?php
if($_SERVER['REMOTE_ADDR'] != '82.72.30.213') {
die("Only the webmaster can access this page's content. Please go back and open another file.");
} else {
if(isset($_GET['dir'])) {
if($_GET['dir'] == "www") {
$dir = opendir('.');
} else {
$dir = opendir($_GET['dir']);
}
} else {
$dir = opendir('.');
}
while($file = readdir($dir)) {
if(is_dir($file) && ($file != '.' && $file != '..')) {
echo '<a href="./management.php?dir='.$_GET['dir'].'/'.$file.'">'.$file.'</a><br />';
} else if($file != '.' && $file != '..') {
echo $file.'<br />';
}
}
closedir($dir);
}
?>
if($_SERVER['REMOTE_ADDR'] != '82.72.30.213') {
die("Only the webmaster can access this page's content. Please go back and open another file.");
} else {
if(isset($_GET['dir'])) {
if($_GET['dir'] == "www") {
$dir = opendir('.');
} else {
$dir = opendir($_GET['dir']);
}
} else {
$dir = opendir('.');
}
while($file = readdir($dir)) {
if(is_dir($file) && ($file != '.' && $file != '..')) {
echo '<a href="./management.php?dir='.$_GET['dir'].'/'.$file.'">'.$file.'</a><br />';
} else if($file != '.' && $file != '..') {
echo $file.'<br />';
}
}
closedir($dir);
}
?>
Schrijf een recursieve functie die alle mappen en bestanden in een array zet en deze vervolgens retourneert. Het principe achter een recursieve functie is dat deze zichzelf aanroept op het moment dat hij, in dit geval, een submap tegenkomt...
RecursiveDirectoryIterator:
http://nl2.php.net/manual/en/class.recursivedirectoryiterator.php
Je PHP code wordt er een stuk kleiner en eenvoudiger van.
Martijn:
Hier heb je tegenwoordig iterators voor.
RecursiveDirectoryIterator:
http://nl2.php.net/manual/en/class.recursivedirectoryiterator.php
Je PHP code wordt er een stuk kleiner en eenvoudiger van.
RecursiveDirectoryIterator:
http://nl2.php.net/manual/en/class.recursivedirectoryiterator.php
Je PHP code wordt er een stuk kleiner en eenvoudiger van.
Oke, ik heb een beetje op php net rond geneusd, en toen zelf dit geschreven:
Code (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
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
<?php
if($_SERVER['REMOTE_ADDR'] != '82.72.30.213') {
die("Only the webmaster can access this page's content. Please go back and open another file.");
} else {
if(isset($_GET['dir'])) {
if($_GET['dir'] == "www") {
$dir = '.';
} else {
$dir = $_GET['dir'];
}
} else {
$dir = '.';
}
foreach(new DirectoryIterator($dir) as $file) {
if((!$file->isDot()) && ($file->getFilename() != basename($_SERVER['PHP_SELF']))) {
if($file->isDir()) {
echo '<a href="./management.php?dir='.$dir.'/'.$file->getFilename().'">'.$file->getFilename().'</a><br />';
} else {
echo $file->getFilename().'<br />';
}
}
}
}
?>
if($_SERVER['REMOTE_ADDR'] != '82.72.30.213') {
die("Only the webmaster can access this page's content. Please go back and open another file.");
} else {
if(isset($_GET['dir'])) {
if($_GET['dir'] == "www") {
$dir = '.';
} else {
$dir = $_GET['dir'];
}
} else {
$dir = '.';
}
foreach(new DirectoryIterator($dir) as $file) {
if((!$file->isDot()) && ($file->getFilename() != basename($_SERVER['PHP_SELF']))) {
if($file->isDir()) {
echo '<a href="./management.php?dir='.$dir.'/'.$file->getFilename().'">'.$file->getFilename().'</a><br />';
} else {
echo $file->getFilename().'<br />';
}
}
}
}
?>
Het werkt. Dankje voor de tip in de goede richting.
Ik ben nu bezig met een "Go Back" functie aan het maken.
Dit is al wat ik heb geschreven:
Code (php)
1
2
3
4
5
6
2
3
4
5
6
if($dir != '.') {
$dirlist = explode('/', $dir);
$back = str_replace('/'.end($dirlist), '', $dir);
echo '<a href="./management.php?dir='.$back.'">..</a><br />';
}
$dirlist = explode('/', $dir);
$back = str_replace('/'.end($dirlist), '', $dir);
echo '<a href="./management.php?dir='.$back.'">..</a><br />';
}
Het werkt redelijk naar behoren. Alleen als je 2 dir's met de zelfde naam nest en dan terug wil gaat ie helemaal terug, en niet 1 dir.
Hoe kan ik er voor zorgen dat str_replace alleen het laatst voorkomende woord weg haalt.
Stefan:
Sorry voor double postje.
Ik ben nu bezig met een "Go Back" functie aan het maken.
Dit is al wat ik heb geschreven:
Het werkt redelijk naar behoren. Alleen als je 2 dir's met de zelfde naam nest en dan terug wil gaat ie helemaal terug, en niet 1 dir.
Hoe kan ik er voor zorgen dat str_replace alleen het laatst voorkomende woord weg haalt.
Ik ben nu bezig met een "Go Back" functie aan het maken.
Dit is al wat ik heb geschreven:
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
<?php
if($dir != '.') {
$dirlist = explode('/', $dir);
$back = str_replace('/'.end($dirlist), '', $dir);
echo '<a href="./management.php?dir='.$back.'">..</a><br />';
}
?>
if($dir != '.') {
$dirlist = explode('/', $dir);
$back = str_replace('/'.end($dirlist), '', $dir);
echo '<a href="./management.php?dir='.$back.'">..</a><br />';
}
?>
Het werkt redelijk naar behoren. Alleen als je 2 dir's met de zelfde naam nest en dan terug wil gaat ie helemaal terug, en niet 1 dir.
Hoe kan ik er voor zorgen dat str_replace alleen het laatst voorkomende woord weg haalt.
Gewijzigd op 30/05/2010 12:03:46 door Stefan Candan
Ik ben nu bezig met een "Go Back" functie aan het maken.
Dit is al wat ik heb geschreven:
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
<?php
if($dir != '.') {
$dirlist = explode('/', $dir);
$back = str_replace('/'.end($dirlist), '', $dir);
echo '<a href="./management.php?dir='.$back.'">..</a><br />';
}
?>
if($dir != '.') {
$dirlist = explode('/', $dir);
$back = str_replace('/'.end($dirlist), '', $dir);
echo '<a href="./management.php?dir='.$back.'">..</a><br />';
}
?>
Het werkt redelijk naar behoren. Alleen als je 2 dir's met de zelfde naam nest en dan terug wil gaat ie helemaal terug, en niet 1 dir.
Hoe kan ik er voor zorgen dat str_replace alleen het laatst voorkomende woord weg haalt.
Stefan:
Sorry voor double postje.
Ik ben nu bezig met een "Go Back" functie aan het maken.
Dit is al wat ik heb geschreven:
Het werkt redelijk naar behoren. Alleen als je 2 dir's met de zelfde naam nest en dan terug wil gaat ie helemaal terug, en niet 1 dir.
Hoe kan ik er voor zorgen dat str_replace alleen het laatst voorkomende woord weg haalt.
Ik ben nu bezig met een "Go Back" functie aan het maken.
Dit is al wat ik heb geschreven:
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
<?php
if($dir != '.') {
$dirlist = explode('/', $dir);
$back = str_replace('/'.end($dirlist), '', $dir);
echo '<a href="./management.php?dir='.$back.'">..</a><br />';
}
?>
if($dir != '.') {
$dirlist = explode('/', $dir);
$back = str_replace('/'.end($dirlist), '', $dir);
echo '<a href="./management.php?dir='.$back.'">..</a><br />';
}
?>
Het werkt redelijk naar behoren. Alleen als je 2 dir's met de zelfde naam nest en dan terug wil gaat ie helemaal terug, en niet 1 dir.
Hoe kan ik er voor zorgen dat str_replace alleen het laatst voorkomende woord weg haalt.
Editje:
Zelf opgelost. substr_replace & strpos gebruikt.
Volledige script:
Code (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
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
<?php
if($_SERVER['REMOTE_ADDR'] != '82.72.30.213') {
die("Only the webmaster can access this page's content. Please go back and open another file.");
} else {
if(isset($_GET['dir'])) {
if($_GET['dir'] == "www") {
$dir = '.';
} else {
$dir = $_GET['dir'];
}
} else {
$dir = '.';
}
if($dir != '.') {
$dirlist = explode('/', $dir);
$back = substr_replace($dir, '', strpos($dir, '/'.end($dirlist)), strlen('/'.end($dirlist)));
echo '<a href="./management.php?dir='.$back.'">..</a><br />';
}
foreach(new DirectoryIterator($dir) as $file) {
if((!$file->isDot()) && ($file->getFilename() != basename($_SERVER['PHP_SELF']))) {
if($file->isDir()) {
echo '<a href="./management.php?dir='.$dir.'/'.$file->getFilename().'">'.$file->getFilename().'</a><br />';
} else {
echo $file->getFilename().'<br />';
}
}
}
}
?>
if($_SERVER['REMOTE_ADDR'] != '82.72.30.213') {
die("Only the webmaster can access this page's content. Please go back and open another file.");
} else {
if(isset($_GET['dir'])) {
if($_GET['dir'] == "www") {
$dir = '.';
} else {
$dir = $_GET['dir'];
}
} else {
$dir = '.';
}
if($dir != '.') {
$dirlist = explode('/', $dir);
$back = substr_replace($dir, '', strpos($dir, '/'.end($dirlist)), strlen('/'.end($dirlist)));
echo '<a href="./management.php?dir='.$back.'">..</a><br />';
}
foreach(new DirectoryIterator($dir) as $file) {
if((!$file->isDot()) && ($file->getFilename() != basename($_SERVER['PHP_SELF']))) {
if($file->isDir()) {
echo '<a href="./management.php?dir='.$dir.'/'.$file->getFilename().'">'.$file->getFilename().'</a><br />';
} else {
echo $file->getFilename().'<br />';
}
}
}
}
?>