Аля Site Explorer (хелп)

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
Аля Site Explorer (хелп)

Здраствуйте
Сразу извиняюсь за свой ламерский вопрос. Есть скрипт, который показывает содержание каталога. (Такой себе Експлорер). Всё в работает, но мне не нравится как оно работает.

значение переменной dir передается урлом. Если юзер идёт в глубь, то урл выглядит так:
http://www/dir.php?dir=d:/www/pic/misto то-есть в принцыпе нормально

если начинает "выходить", то
http://www/dir.php?dir=d:/www/pic/misto/../..
(то-есть юзер сейчас находится в папке d:/www
как избежать косых с точками? /../..

Или как правильно делать переход между папками ? (если что не так)? Подскажите плз.

может значение переменной передавать не урлом?

как сделать чтоб у юзера запускался даунлоад если он "выбрал" файл?

Этим скриптом можно лезть выше общедоступной папки. Например сайт лежит в папке home/httpd/mainsite
Как застраховаться, чёб юзер не лез "выше" /home/?

З.Ы. Надеюсь мои вопросы не показались Вам слишком ламерскими

Зы.Зы Я не программер, я только учусь (в свободное от работы время)

Вот сам скрипт:[.B]

if (isset($dir)){
chdir($dir);}

if (!isset($dir)){
$dir = $DOCUMENT_ROOT;}?>

<table class="text">

<?
$opendir = opendir ("$dir");
while ($file = readdir($opendir)){

if (is_dir($file)){?>//если это директория
<tr><td><img src="folder.gif" width="26" height="26" border="0" alt=""></td><td><a class="text" href="<? echo $PHP_SELF."?dir=".$dir."/".$file; ?>"> <? echo $file."</a></td><td>директория</td></tr>";}?>
<?

if (!is_dir($file)){?>//если это файл
<tr><td></td><td><a class="text" href="<? echo $PHP_SELF."?file=".$file; ?>"> <? echo $file."</a></td><td>размер файла: ".filesize($file)."</td>";} }?>
</table>

ОГРОМНОЕ СПАСИБО!!!!
 

pumba

Guest
http://php.spb.ru/remview/
>Как застраховаться, чёб юзер не лез "выше" /home/?
В httpd.conf, в разделе <VirtualHost...>:
php_admin_value open_basedir /home
http://www.opennet.ru/tips/sml/34.shtml
 

RomikChef

Guest
если $file="..", то отнимай от dir последний каталог и обнуляй $file
strrpos и substr тебе помогут.
 
Сверху