Up dir verbergen

Status
Niet open voor verdere reacties.

ginojo

Gebruiker
Lid geworden
7 sep 2010
Berichten
912
Hallo,

Ik heb een vraagje... Ik wil een venster maken waarin bezoekers in de map 'pdf' kunnen kijken... hierin staan mij algemene voorwaarden in pdf... maar nu staat daarboven nog een '.' en een '..' voor te navigeren naar andere mappn. Maar hoe kan ik deze ; navigatiepuntjes' verbergen?

Alvast bedankt,
Ginojo
 
dan zul je toch even het script moeten posten, zodat we een kijkje kunnen nemen.

Anders moet je met gum of tipex gaan werken;)
 
haha... ok... code
PHP:
<?php
if ($handle = opendir('./pdf/')) {
 echo "Versies:<br />";
    while (false !== ($file = readdir($handle))) {
        echo "<a href='./pdf/$file' shape='rect'>$file</a><br />";
    }  
    closedir($handle);
}
?>

was um vergeten...
trouwens bedankt voor je snele reactie
ginojo
 
wat dacht je van een if-statement

PHP:
<?php
if ($handle = opendir('./pdf/')) {
 echo "Versies:<br />";
    while (false !== ($file = readdir($handle))) {
        if($file != "." || $file != "..") {
        echo "<a href='./pdf/$file' shape='rect'>$file</a><br />";
        }
    }  
    closedir($handle);
}
?>

Ik geloof dat het ook op een andere manier kan, maar die heb ik ooit eens gezien en niet onthouden
 
ja, daar zat ik ook al aan te denken, maar die code doet ut niet... :(
dus ik weet niet wat er fout is... :S
 
probeer het eens met AND
if($file != '.' && $file != '..')
 
hi wat or en and een verschil kan maken!!!
 
Houd er rekening mee dat iedereen met een beetje verstand nog wel de link naar .. kan volgen en zo in de up directory terecht komt ;) Ik weet niet of dat een probleem is, maar wel iets om even over na te denken.
 
@Frats
Hoe kun je dat dan onzeilen? Ik heb op php.net en google gekeken, maar overal wordt de if-statemant gebruikt.
Hoe zou je het dan aanpakken?
 
Well, in dit geval is het niet echt een probleem (oh, met deze statement krijg ik problemen :p), omdat je je dir-naam hardcode. Maar neem bijvoorbeeld zoiets:
PHP:
$dir = isset($_GET['dir']) ? $_GET['dir'] : 'pfd/';

// de rest...
Je kan bijvoorbeeld uit de inkomende data (de get) eventjes filteren, want anders kan men gewoon een .. in de QS neerzetten:
Code:
blablabla.php?dir=../
en zo in een 'hogere' map terechtkomen.
 
Maar dan controleer je toch eerst de inhoud van de $_GET of het . of .. is
of je stript de $_GET string van een ./ of ../

Dan heb je dat toch aardig ondervagen
 
Dat klopt, als je dat doet heb je het ondervangen ;) Maar dan moet je dat wel doen.-
 
Maar dan moet je dat wel doen.-

En je moet het goed doen. Een veel voorkomende fout is dat mensen denken dat
PHP:
str_replace('../', '', $_GET['dir'])
voldoende is.

Een dergelijke beveiliging werkt echter niet als iemand dit doet:
Code:
blablabla.php?dir=....//
 
dus eigenlijk met preg_match alle punten en slashes aan het begin van de string verwijderen!
 
Alleen maar lapmiddelen. Als een map niet direct benaderd mag worden, zorg je er op server-niveau voor dat die map niet kan worden benaderd, klaar. Dit is allemaal beveiligingsgevoelig gepruts.
 
Als je die mogelijkheid hebt is dat inderdaad het beste. Hoewel ik niet weet of basis providers zoiets aanbieden?
 
Je moet nooit bij een provider gaan waarbij al je bestanden via het web bereikbaar zijn. Alle niet-web-bestanden één map boven public_html, alle plaatjes/css/js/uploads via web bereikbaar en het is opgelost. Anders .htaccess of een vergelijkbaar iets.

Een andere manier is voor mij onbespreekbaar.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan