[php] Directory uitlezen en hyperlink van maken *

Pagina: 1
Acties:
  • 149 views sinds 30-01-2008
  • Reageer

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Titel zegt al genoeg:

Ik heb het volgende:

Ik heb een php scriptje die een directory uitleest en deze directory een hyperlink van maakt:

Nu is deze map een link geworden maar in die directory zitten sub directory's

Als ik op de directory klik kan die niks vinden:

dit is de link naar me webserver waar het script op staat dan kan je het zelf zien:

http://10.0.0.10/intranet/uitlezen.php

Zoals je ziet hij werkt niet:

Dit is het script:

code:
1
2
3
4
5
6
7
8
9
<?php 
$handle=opendir('c:/inetpub/Apache Group/Apache2/htdocs/intranet/doc'); 
while (false!==($file = readdir($handle))) { 
   if ($file != "." && $file != "..") { 
       echo "<a href='$file'>[img]'fold.gif'[/img]$file</a><br>"; 
   } 
}
closedir($handle); 
?>

Acties:
  • 0 Henk 'm!

  • MaxxRide
  • Registratie: April 2000
  • Laatst online: 22-06 16:52

MaxxRide

Surf's up

Je link werkt niet, dit is je "interne" (intranet) kant en niet je internet (buiten) kant.

Maareh, wat staat er in $file? Lijkt me dat dit een "relatief" pad is, dan kan je href op deze manier niet werken (er zal nog een server naam oid voor moeten b.v. http://10.0.0.1/dir/$file)

If you are not wiping out you are nog pushing enough...


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Als ik het met http:// etc. etc.

doe lees die de directory geen eens uit.

dus heb het via c: enz enz gedaan leest die hem wel uit.

Acties:
  • 0 Henk 'm!

  • MaxxRide
  • Registratie: April 2000
  • Laatst online: 22-06 16:52

MaxxRide

Surf's up

ik heb het over de code in :
code:
1
<a href='$file'>

If you are not wiping out you are nog pushing enough...


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
daar staat niks in.

Maar ik gee toch aan opendir, nou en zeg van open en maak er hyperlink van.

Alleen weet neit hoe ik nu moet aangeven van open de map waarin subfolders en bestanden staan.

Acties:
  • 0 Henk 'm!

  • MaxxRide
  • Registratie: April 2000
  • Laatst online: 22-06 16:52

MaxxRide

Surf's up

Ik begrijp echt niets van wat je tikt, zou het misschien duidelijker, vollediger en in het NL kunnen?

If you are not wiping out you are nog pushing enough...


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
die $file daar staat niks in.

Maar ik geef toch bij opendir aan van open deze directory.

En vervolgens maak er een hyperlink van.

En laat dit zien

Maar zoals je ziet hij opent hem niet.

En dat is het probleem dat die hem niet opent en weet zelf e oplossing daarvan niet.

Acties:
  • 0 Henk 'm!

  • T-MOB
  • Registratie: Maart 2001
  • Laatst online: 22:34
Je probleem is dat als je zo'n link naar een subdirectory volgt dat je dan niet meer "uitlezen.php" draait. Oftewel dat je gewoon naar de subdirectory wordt verwezen. Als je wilt dat de bestanden in de subdirectory worden weergegeven dan zul je daar een index.html (of index.php) moeten plaatsen dat de bestanden uit die directory inscant en weergeeft...

Of je zorgt ervoor dat je een recursieve functie schrijft die elke keer als er een subdirectory gevonden wordt deze subdirectory ook inscant en iets van een tree weergeeft als html output waardoor je ook de bestanden binnen de subdirectory kunt aanklikken.

Regeren is vooruitschuiven


Acties:
  • 0 Henk 'm!

  • WPN
  • Registratie: Augustus 2003
  • Laatst online: 24-07 21:14

WPN

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
$dir = //wat jij als directory wilt, maar geen absoluut path 
$handle=opendir($dir); 

while(false!==($file = readdir($handle))) 
{ 

  if($file != "." && $file != "..") 
  { 
    $plaatje=$dir."/".$file;
    echo "<br>[img]$plaatje><br[/img]"; 
  } 
}


in dit voorbeeldje heb ik alleen plaatjes staan die gelezen worden, maar met beetje eigen inzet kan je zelf iets voor maken
hoe je sub dirs hierin afhandelt moet je zelf even kijken
makkelijkste lijkt mij
link laten maken naar subdir, en de index.php deze listing laten zien

[ Voor 39% gewijzigd door WPN op 02-06-2004 21:47 ]

Als ik denk zoals ik dacht, dan doe ik zoals ik deed, als ik doe zoals ik deed, dan denk ik zoals ik dacht! Cogito Ergo Sum


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Dus als ik begrijp moet ik in elke map een index bestand plaatsen en in dit bestand de directory weer vervolgens uit moet laten lezen.

Zal is ff proberen

Acties:
  • 0 Henk 'm!

  • WPN
  • Registratie: Augustus 2003
  • Laatst online: 24-07 21:14

WPN

Peluso schreef op 02 juni 2004 @ 21:43:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
$dir = //wat jij als directory wilt, maar geen absoluut path 
$handle=opendir($dir); 

while(false!==($file = readdir($handle))) 
{ 

  if($file != "." && $file != "..") 
  { 
    $plaatje=$dir."/".$file;
    echo "<br>[img]$plaatje><br[/img]"; 
  } 
}


in dit voorbeeldje heb ik alleen plaatjes staan die gelezen worden, maar met beetje eigen inzet kan je zelf iets voor maken
hoe je sub dirs hierin afhandelt moet je zelf even kijken
makkelijkste lijkt mij
link laten maken naar subdir, en de index.php deze listing laten zien
sorry verkeerde knop, quote inplaats van edit.....
edit: had wat commentaar weggehaalt voor de layout

[ Voor 14% gewijzigd door WPN op 02-06-2004 21:46 ]

Als ik denk zoals ik dacht, dan doe ik zoals ik deed, als ik doe zoals ik deed, dan denk ik zoals ik dacht! Cogito Ergo Sum


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Bedankt

maar ik snap er niks meer van

heb zoveel dingen gezien dat ik neit meer weet hoe of wat

Acties:
  • 0 Henk 'm!

  • T-MOB
  • Registratie: Maart 2001
  • Laatst online: 22:34
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
function tree($dir, $parent_dir) 
{
$handle=opendir($dir);
$output = "<ul>\n";

while (false!==($file = readdir($handle))) 
    { 
   if ($file != "." && $file != "..") 
       {
      $output .= " <li>";
       if (is_dir($dir .$file)) 
           {
           $new_dir = $dir .$file .'\\';
           $output .= '<b>dir:</b> ' .$file ."</li>\n <li>";
           $output .= tree($new_dir, $file); 
           } else {
            $output .= '<a href="' .$parent_dir .'/' .$file .'">[img]"fold.gif"[/img]' .$file .'</a>';
           }
      $output .= "</li>\n";
        } 
    }
closedir($handle);
$output .= "</ul>\n";
return $output;
}
echo tree("c:\\inetpub\\Apache Group\\Apache2\\htdocs\\intranet\\doc", '');
?>


En alstublieft... dit is een recursieve functie die dirs incluis subdirs voor je uitleest en omzet in HTML lijstjes (<ul>) met de bestanden... wat ontbreekt zijn de namen van de subdirs (die krijg je niet te zien). Zodra je de functie doorhebt is dat in 2secs ingebouwd...

edit2
Zo werkt ie helemaal... succes ermee :)

[ Voor 69% gewijzigd door T-MOB op 02-06-2004 22:37 . Reden: [s]in[/s]complete... ]

Regeren is vooruitschuiven


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Bedankt voor script.

Maar werkt nog steeds niet :?

http://10.0.0.10/intranet/uitlezen.php

Kijk zelf maar, weet het echt ff niet meer

Acties:
  • 0 Henk 'm!

  • bigbeng
  • Registratie: Augustus 2000
  • Laatst online: 26-11-2021
Een basiscursus TCP/IP zou in dit geval geen kwaad kunnen. Je bent er al eerder op gewezen dat het IP-adres wat je opgeeft vanaf buiten niet te benaderen is. En sinds ik het een aantal maal voorbij zag komen op dit forum ben ik er dol op:
http://www.w3schools.com/tcpip/default.asp

W3Schools is een goede site met allerlei tutorials, waaronder dus deze over tcp/ip.

Lost niet je probleem op met php, maar verschaft wel meer duidelijkheid over hoe het Internet werkt.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
shit sorry.

helemaal neit aan gedacht, komt ook doordat ik hele tijd met script bezig ben.

ben helemaal warig

http://80.100.145.175/intranet/uitlezen.php

mijn excuses |:(

Acties:
  • 0 Henk 'm!

  • T-MOB
  • Registratie: Maart 2001
  • Laatst online: 22:34
Bij mij werkt ie wel (zie maar)(owkee gaat nog niet helemaal goed met linkjes naar subdirs in subdirs, maargoed was 5min werk). Maar misschien kun je iets duidelijker omschrijven wat er niet werkt... Wordt er niets weergegeven, krijg je PHP errors, werken de linkjes niet :? :?

En idd, linkje naar je externe ip zou helpen als wij het willen zien...

Regeren is vooruitschuiven


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Strcutuur is als volgt:

ICT (Dir)
Onderwijs (Dir)
Blokboeken (Dir)
text.doc
text.exls
Roosters (Dir)
text.ppt

Klein voobeeld zo staat het op me hd.

Als ik map ict open moet die, die openen en de map Onderwijs tonen.
Die meot je weer openen en moet die de mappen daaronder weer tonen. enz. enz.

Maar als ik dus op de map ict klik kan die niks vinden.

Acties:
  • 0 Henk 'm!

  • bigbeng
  • Registratie: Augustus 2000
  • Laatst online: 26-11-2021
Je moet nog even de huidige dir achter het linkje plakken. Hij wijst nu naar je externe adres en dan direct /ICT en ik heb het sterke vermoeden dat dat /intranet/ICT moet zijn, of niet?

edit:

je was me voor...


Maar even voor mijn duidelijkheid, die dir ICT staat onder intranet?
Of staat hij helemaal buiten de webroot? (htdocs geloof ik bij Apache).

[ Voor 34% gewijzigd door bigbeng op 03-06-2004 19:45 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Als ik er op klik gaat die van
intranet/uitlezen.php
naar
/ict

en de dit waar die begint is:

c:\\inetpub\\Apache Group\\Apache2\\htdocs\\intranet\\doc

zoals je in script kan zien

Acties:
  • 0 Henk 'm!

  • bigbeng
  • Registratie: Augustus 2000
  • Laatst online: 26-11-2021
Zou je dan doc niet ook nog even aan de link toevoegen?
Ik heb net http://80.100.145.175/intranet/doc/ICT/ uitgeprobeerd en die bestaat dus wel. Ik heb alleen geen toegang, ik krijg Access Forbidden als ik hem probeer te benaderen.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ja heb ik vaker met apache als ik er een index bestand inzet kan die pas openen :?

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Verwijderd schreef op 03 juni 2004 @ 20:03:
Ja heb ik vaker met apache als ik er een index bestand inzet kan die pas openen :?
Dan moet je de regel
code:
1
Options +Indexes

in je httpd.conf of .htaccess file van Apache opnemen.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • T-MOB
  • Registratie: Maart 2001
  • Laatst online: 22:34
Als je mijn scriptje nog gebruikt dan denk ik dat je nog een backslash moet toevoegen in je aanroep. Dus:
code:
1
echo tree("c:\\inetpub\\Apache Group\\Apache2\\htdocs\\intranet\\doc\\", ''); // let op "\\"


Voorts moet je nog wat bedenken voor het juist maken van de linkjes :)

Regeren is vooruitschuiven

Pagina: 1