Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]blokowanie dostępu do plików wyżej w hierarchii
Forum PHP.pl > Forum > Przedszkole
Majzel
Chciałbym zablokować pliki powyżej folderu załóżmy download, wiem jak by to miało mniej więcej wyglądać ale nie wiem jak to napisać:D brakuje mi z może 1 linijki,
  1. <?php
  2. define('WEBMADE', true);
  3. ?>
  4. <a href="cos.php?file=cos.jpg" />Ściągnij!</a>
  5. <?php
  6.  
  7. if (isset($_GET['file']))
  8. {       if ($_GET['file']== // tutaj coś żeby adres wyglądał tak żeby nic nie można wpisać pomiędzy)
  9.            {
  10.                
  11.            
  12.        header('Cache-control: private');
  13.        header('Content-Length: ' . filesize($_GET['file']));
  14.        header('Content-Type: application/octet-stream');
  15.        header('Content-Disposition: attachment; filename=' . basename($_GET['file'])); // nagłówek ustawiający zawartość jako załącznik
  16.  
  17.        readfile($_GET['file']); // ściągnięcie pliku    
  18.        }
  19. }
  20.  
  21. echo basename($_GET['file']);
  22. ?>


eh, jak to było ? jak to napisać?
bo chodzi mi o to żeby np. z takiego czegoś:
http://localhost/download/wlam.php?file=cos.jpg
nie mogli zrobić:
http://localhost/download/wlam.php?file=../index.php
Majzel
smile.gif
nie jestem jeszcze na tym etapie żeby zrozumieć od zaraz o co chodzi z tą funkcją smile.gif
zrobiłem tak i działa:
  1. <?php
  2. if (preg_match('/^[a-zA-Z.]+$/',$_GET['file']))
  3. ?>

ale o co chodzi z tym basename? przezcież ona tylko zwraca nazwe pliku
bobo168
sprawdzanie czy zmienna file posiada znak '/' jeśli tak do nie dopuszczasz do pobrania.
  1. <?php
  2. if(substr_count($_GET['file'],"../")==0)
  3. {
  4. // wykonuje kod
  5. }
  6. else
  7. {
  8. // nie wykonuje kodu
  9. }
  10. ?>
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.