File management system

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Stefan Candan

Stefan Candan

30/05/2010 11:07:32
Quote Anchor link
Ik ben bezig een file management system aan het schrijven. Deze laat zoals een apache server zonder index file ook een lijst zien met dir's en files. Nu wil ik er verder mee gaan. Ik kan nu wel verschillende dir's openen in de root folder, maar zodra daar weer in dir instaat kan ik hier niet op klikken. Momenteel staan deze files op mijn webserver:

. <- 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)
PHP script in nieuw venster Selecteer het PHP script
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
<?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);
        
    }

    
?>
 
PHP hulp

PHP hulp

23/12/2024 17:48:41
 
Joren de Wit

Joren de Wit

30/05/2010 11:13:08
Quote Anchor link
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...
 
Martijn B

Martijn B

30/05/2010 11:20:24
Quote Anchor link
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.
 
Stefan Candan

Stefan Candan

30/05/2010 11:45:05
Quote Anchor link
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.


Oke, ik heb een beetje op php net rond geneusd, en toen zelf dit geschreven:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?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 />';
                
                }
        
            }
        
        }
    
    }

?>


Het werkt. Dankje voor de tip in de goede richting.
 
Stefan Candan

Stefan Candan

30/05/2010 12:03:09
Quote Anchor link
Sorry voor double postje.

Ik ben nu bezig met een "Go Back" functie aan het maken.

Dit is al wat ik heb geschreven:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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 />';
        }


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 Candan

Stefan Candan

30/05/2010 12:03:26
Quote Anchor link
Stefan:
Sorry voor double postje.

Ik ben nu bezig met een "Go Back" functie aan het maken.

Dit is al wat ik heb geschreven:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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 />';
        }

?>


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
 
Stefan Candan

Stefan Candan

30/05/2010 12:16:04
Quote Anchor link
Sorry voor double postje.

Ik ben nu bezig met een "Go Back" functie aan het maken.

Dit is al wat ik heb geschreven:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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 />';
        }

?>


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 Candan

Stefan Candan

30/05/2010 12:20:52
Quote Anchor link
Stefan:
Sorry voor double postje.

Ik ben nu bezig met een "Go Back" functie aan het maken.

Dit is al wat ik heb geschreven:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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 />';
        }

?>


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)
PHP script in nieuw venster Selecteer het PHP script
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
<?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 />';
                
                }
        
            }
        
        }
    
    }

?>
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.