login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Dir uitlezen

Offline Sorcer - 18/09/2006 15:44 (laatste wijziging 18/09/2006 15:45)
Avatar van SorcerPHP interesse Beste,

Ik ben opzoek naar een script waarvan ik een dir kan uitlezen. Het moet alsvolgt werken:

- Via /var/www/html/test/index.php bezoek ik de website. Het script (index.php) moet dan een dir uitlezen van een gebruiker op mijn Linux server bijv in de map: /home/test/

Zodra je dus bijv: http://hierdomein.nl/test bezoekt, krijg je de lijst met de files in /home/test (Ik wil hier graag Demo bestanden vanaf kunnen downloaden en verwijderen)

Iemand die mij hierbij kan helpen?

Bedankt alvast!  

44 antwoorden

Gesponsorde links
Offline Thomas - 18/09/2006 15:53
Avatar van Thomas Moderator Al tussen de scripts gekeken?
Offline Sorcer - 18/09/2006 16:06
Avatar van Sorcer PHP interesse Jazeker, alleen dat is het net allemaal niet 
Offline Thomas - 18/09/2006 16:10 (laatste wijziging 18/09/2006 16:11)
Avatar van Thomas Moderator Voor oplossingen op maat zul je zelf aan het programmeren moeten slaan, of je plaatst een ver...rken".

Bij de eerste variant kunnen we je helpen bij vragen, maar verwacht niet dat wij de code voor je schrijven (ik iig niet).
Offline Rik - 18/09/2006 16:14
Avatar van Rik Gouden medailleGouden medaille

Crew algemeen
Een dir uitlezen gaat zo:
  1. <?php
  2. $dir = dir('pad naar je directory');
  3. while (($file = $dir->read()) !== false) {
  4. if ($file != '.' && $file != '..') {
  5. if (is_dir($file)) {
  6. echo 'Dir: '
  7. } else {
  8. echo 'File: '
  9. }
  10. echo $file . '<br />';
  11. }
  12. }
  13. ?>


Dat had je ook in een tutorial kunnen vinden, als je verder nog iets zoekt voor verwijderen (unlink()) en downloaden kan je dat denk ik wel tot een systeempie draaien.
Offline Sorcer - 18/09/2006 17:03
Avatar van Sorcer PHP interesse Alvast bedankt voor jullie reacties.

Boukefalos, Ik heb het script geladen en ik ben naar de pagina gegaan, maar het blijft een witte pagina.

$dir = dir('/home/hltv/hlds_1/cstrike');

Dat heb ik als dir gebruikt. Ik heb geen idee of dit goed is, of...
Hopelijk heeft u een antwoord ;)
Offline Dark_Paul - 18/09/2006 17:12
Avatar van Dark_Paul PHP ver gevorderde http://nl2.php.net/readdir
wat nuttige info over readdir en opendir ed. Met dat voorbeeld lukt het altijd 
Offline Rik - 18/09/2006 17:33
Avatar van Rik Gouden medailleGouden medaille

Crew algemeen
Ik was twee ;'s vergeten...
  1. echo 'Dir: '
  2. } else {
  3. echo 'File: '
=>
  1. echo 'Dir: ';
  2. } else {
  3. echo 'File: ';


$dir->read(), doet het zelfde als wat Dark_Paul zegt, het is alleen in class vorm. klik
Offline Voldemort - 18/09/2006 17:37
Avatar van Voldemort PHP ver gevorderde PHP.net: scandir

(PHP 5 only)
Offline Rik - 18/09/2006 17:41
Avatar van Rik Gouden medailleGouden medaille

Crew algemeen
Probleem met scandir is behalve dat het alleen voor php 5 is ook dat je in de gereturnde array geen verschil ziet tussen een bestand en een map.

Dan moet je er weer een for / foreach over halen om te controleren of het een map is.
Offline Sorcer - 18/09/2006 18:01
Avatar van Sorcer PHP interesse Ik zit nog steeds met het probleem dat ik vanaf mijn Apache server (Linux based) of een verkeerde dir intyp of het script werkt niet!

Ik wil dus gewoon dat ik bij /var/www/test/index.php het script kan zetten. En in het script een dir kan zetten om hem van een user uit te lezen bijv: /home/hltv/hlds_1/cstrike/

Ook zou het handig zijn als de mensen op de pagina zelf het bestand kunnen aanklikken om het te downloaden.

Heb trouwens van Dark_Paul geprobeerd (al die) maar het werkt op een of andere manier NIET!

Iemand een idee? Krijg telkens een witte pagina.
Offline CDNC - 18/09/2006 18:20
Avatar van CDNC PHP ver gevorderde echo ook eens het aantal bestanden en als dan dan 0 is, weet je dat je pad fout is...
Offline Sorcer - 18/09/2006 18:33
Avatar van Sorcer PHP interesse Enige script hiervoor?
Offline Rik - 18/09/2006 20:07
Avatar van Rik Gouden medailleGouden medaille

Crew algemeen
Toen er fouten in het script stonden (;'s vergeten) kreeg je een witte pagina. Zet eens error_reporting(E_ALL) bovenaan je script. Als er dan fouten in zitten zie je ze tenminste.

Ik weet niet hoe op linux die mappen werken, maar je script staat dus hier:
/var/www/html/test/
Als je dan van /home/hltv/hlds_1/cstrike dit maakt:
../../../../home/hltv/hlds_1/cstrike
Dus een relatief pad opgeven.
Offline Sorcer - 18/09/2006 20:32 (laatste wijziging 18/09/2006 20:33)
Avatar van Sorcer PHP interesse Boukefalos, Ik zie ook niets met bovenaan het script: error_reporting(E_ALL) - Geen errors of tekst.

Ook heb ik de path opnieuw ingevuld zoals jij hebt gezegt.
Op dit moment is het script zo:

error_reporting(E_ALL)
<?php
$dir = dir('../../../../home/hltv/hlds_1/cstrike');
while (($file = $dir->read()) !== false) {
if ($file != '.' && $file != '..') {
if (is_dir($file)) {
echo 'Dir: '
} else {
echo 'File: '
}
echo $file . '<br />';
}
}
?>

Hopelijk snel een oplossing! 
Offline Dark_Paul - 18/09/2006 21:07 (laatste wijziging 18/09/2006 21:08)
Avatar van Dark_Paul PHP ver gevorderde Draai dit eens en kijk wat eruit komt.
  1. <?php
  2. $dir = 'jemap';
  3. $handle = opendir($dir);
  4. $bestanden = array();
  5. while (false !== ($file = readdir($handle))) {
  6. echo $file."\n";
  7. $bestanden[] = $file;
  8. }
  9. print_r($bestanden);
  10. ?>

Error_reporting(E_ALL); moet je wel binnen de <?php-tags hebben he ;)
Offline Sorcer - 18/09/2006 21:20
Avatar van Sorcer PHP interesse Stom 

Ik heb het script geladen en er komt uit: Array ( )
Offline Dark_Paul - 19/09/2006 15:10
Avatar van Dark_Paul PHP ver gevorderde Dat betekent dus dat je map neit goed is, of er geen bestanden in de map staan.
Offline Rik - 19/09/2006 16:03
Avatar van Rik Gouden medailleGouden medaille

Crew algemeen
Mijn script werkt niet omdat de ;'s achter de 1e twee echo's nog steeds missen. Zo zou hij het toch echt moeten doen:

  1. <?php
  2. $path = 'pad.../'; // Afsluiten met een / !!
  3.  
  4. if (!file_exists($path)) {
  5. die('<b>ERROR:</b> "' . $path . '" bestaat niet!');
  6. }
  7.  
  8. $dir = dir($path);
  9. while (($file = $dir->read()) !== false) {
  10. if ($file != '.' && $file != '..') {
  11. if (is_dir($path . $file)) {
  12. echo 'Dir: ';
  13. } else {
  14. echo 'File: ';
  15. }
  16. echo $file . '<br />';
  17. }
  18. }
  19. ?>
Probeer hem eerst eens op een map die makkelijker 'te bereiken' is, dan krijg je een beetje vertrouwen in mijn code... 

@Dark_Paul
Je vergeet te checken op pointers (. en ..) 
Offline Dark_Paul - 19/09/2006 16:13 (laatste wijziging 19/09/2006 16:15)
Avatar van Dark_Paul PHP ver gevorderde @Boukefalos
Daar was mijn scriptje ook niet voor bedoelt, was puur bedoeld om te kijken of er iets mis was met de map of het pad. Was niet bedoeld om zo te gebruiken.
Ik zit te denken dat het misschien aan de chmod van de map kan liggen. Zet die 's op 744 (dan kan je zeker lezen).
Offline Rik - 19/09/2006 16:20
Avatar van Rik Gouden medailleGouden medaille

Crew algemeen
Ik heb net een map gemaakt en daar wat rotzooi heen gekopieerd als je die chmod naar 000 via php en daarna ga je kijken wat voor chmod die map heeft dan staat ie alsnog op 555. Dan kan je dus nog lezen, is het niet dat je pas bij 000 echt niets er meer mee kan?

Dit heb ik getest op een windows server maar op linux zal dit wss wel anders zijn...
Offline Sorcer - 19/09/2006 16:38
Avatar van Sorcer PHP interesse @Boukafalos

Volgens mij klopt er gewoon iets NIET!
Script staat in de home map even: http://www.sorcer.nl/dir.php
Nu moet hij naar downloads/ gaan. Alhoewel hij toch nog steeds een error geeft, van ik kan hem niet vinden etc.

Offline Rik - 19/09/2006 17:03
Avatar van Rik Gouden medailleGouden medaille

Crew algemeen
En als je van de /'s \'s maakt?
Offline Sorcer - 19/09/2006 17:18 (laatste wijziging 19/09/2006 17:18)
Avatar van Sorcer PHP interesse Parse error: syntax error, unexpected '>' in /home/nick/domains/sorcer.nl/public_html/dir.php on line 5
Offline letscode - 19/09/2006 17:19
Avatar van letscode HTML beginner plaats eens wat code op www.plaatscode.be als je wilt dan kunnen we pas echt kijken waar de fout zit
Offline Dark_Paul - 19/09/2006 17:19
Avatar van Dark_Paul PHP ver gevorderde Post je code eens op plaatscode.be (ff zorgen dat er geen wachtwoorden instaan) dan kunnen we 't zien. Waarschijnlijk open je <?php terwijl die nog open is.
Offline Sorcer - 19/09/2006 17:27
Avatar van Sorcer PHP interesse Code is te vinden op:

http://plaatscode.be/2662/

Hij staat nu in de HOME map (het script) en gaat naar de map downloads.

Succes!
Offline CDNC - 19/09/2006 17:34
Avatar van CDNC PHP ver gevorderde $path = '\downloads\'; // Afsluiten met een / !!

OK?
Offline Rik - 19/09/2006 17:42
Avatar van Rik Gouden medailleGouden medaille

Crew algemeen
@CDNC
Dat had ik er bij gezet zodat het bij mij werkte, voor Sorcer moet het een \ worden: $path = '\downloads\\'; En de laatste \ nog eens geescaped anders krijg je die error die je net poste:

  1. Parse error: syntax error, unexpected '>' in /home/nick/domains/sorcer.nl/public_html/dir.php on line 5
Offline Sorcer - 19/09/2006 17:42 (laatste wijziging 19/09/2006 17:55)
Avatar van Sorcer PHP interesse @Boukefalos

ERROR: "\downloads\" bestaat niet!

Er klopt dus duidelijk echt iets niet! De dir bestaat + er zitten bestanden in (.php etc)
Gek genoeg werkt hij dus niet. Huidige script geladen:

<?php
$path = '\downloads\\'; // Afsluiten met een / !!

if (!file_exists($path)) {
die('<b>ERROR:</b> "' . $path . '" bestaat niet!');
}

$dir = dir($path);
while (($file = $dir->read()) !== false) {
if ($file != '.' && $file != '..') {
if (is_dir($path . $file)) {
echo 'Dir: ';
} else {
echo 'File: ';
}
echo $file . '<br />';
}
}
?>
Offline Dark_Paul - 19/09/2006 17:56 (laatste wijziging 19/09/2006 17:57)
Avatar van Dark_Paul PHP ver gevorderde Probeer het eens met / ipv \, dus $path = 'downloads/';
En volgende keer codes tussen [[code]]-tags graag, is overzichtelijker ;)
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.275s