Mam takie coś:

  1. <?
  2. $filename = basename($HTTP_GET_VARS["f"]);
  3. if(file_exists($filename)) {
  4.     switch (substr($filename, strlen($filename)-3, 3)) {
  5.         case 'pdf':
  6.             header("Content-Type: application/pdf");
  7.             header("Content-type: application/pdf");
  8.             break;
  9.         case 'doc':
  10.             header("Content-type: application/msword");
  11.             header("Content-type: application/msword");
  12.             break;
  13.         case 'xls':
  14.             header("Content-type: application/msexcel");
  15.             header("Content-type: application/msexcel");
  16.             break;
  17.     }
  18.     header("Content-Disposition: attachment; filename=$filename");
  19.     readfile($filename);
  20. }
  21. ?>



I do tego takie pytanie: Czy jest jakiś sposób żeby z przeglądarki nadać zmiennej $filename wartość np /katalog1/katalog2/plik.txt czyli tak po prostu ominąć BASENAME w pierwszej linii ? Co wpisać w $f ??


Dla zobrazowania tego o co mi chodzi dodam link:

http://members.lycos.co.uk/pieczen1/download.php

jeśli na końcu dopisze ?f=download.php lub jakikolwiek inny plik przeglądarka ściągnie mi niezmieniony plik download.php z katalogu w którym sie znajduje. A co jesli chce sciągnąć tym skryptem plik z innego katalogu np: /katalog/index.php ? Bo jak wpisze ?f=katalog/index.php to BASENAME obcina nazwe katalogu. Czy można w ogóle to jakoś zrobić ?? Aha i nie mam mozliwosci edycji pliku download.php

?f= "co??" lub/i ?filename= "co??"