Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Plan na przechowywanie plików -proszę o krytykę-
Morfi777
post
Post #1





Grupa: Zarejestrowani
Postów: 76
Pomógł: 1
Dołączył: 5.09.2007

Ostrzeżenie: (0%)
-----


Hej!

Chciałem napisać skrypt do zarządzania plikami w którym nie byłoby ograniczeń co do rodzaju pliku, wobec tego żaden z nich nie może być dostępny pod direct link.
System powinien też móc ograniczyć możliwość ściągnięcia pliku: gościom/użytkownikom/grupom.

Najlepszą opcją zakładam, że byłoby secure_download(nginx) lub mod_secdownload (lighthttpd), ale zakładam, że nie mam dostępu do webserwera a provider jest siusiakiem i nie będzie robił wyjątków ani nie dogra tego.

Chciałbym mieć możliwość wrzucania dowolnych rodzajów plików. Pomysł jest następujący.
Tworzę katalog /files/ który dostaje Auth (zabezpieczenie direct linkowania, jako Auth rozumiem mod_auth w apache lub odpowiednik).
plik dl.php?path=__________ będzie służył do wyciągania plików z katalogu /files/

  1. <?php
  2.  
  3. function CheckAuth($sess)
  4. {
  5. ble ble ble...
  6. return $dir;
  7. }
  8.  
  9. $access = CheckAuth($_SESSION[costam]);
  10.  
  11. $file = 'files/' . $access . str_replace(array(chr(0),'../'), '', $_GET["file"]);
  12.  
  13. if (file_exists($file)) {
  14. header('Content-Description: File Transfer');
  15. header('Content-Type: application/octet-stream');
  16. header('Content-Disposition: attachment; filename='.basename($file));
  17. header('Content-Transfer-Encoding: binary');
  18. header('Expires: 0');
  19. header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
  20. header('Pragma: public');
  21. header('Content-Length: ' . filesize($file));
  22. flush();
  23.  
  24.  
  25. readfile($file);
  26. }
  27. else
  28. die('no cze');
  29.  
  30. ?>


Plik sprawdza poziom dostępu wrzucając użytkownika do oddzielnego katalogu (oczywiście będzie to rozwiązane mądrzej, ale zamysł ten sam -- przydzielanie dostępu do dir po sesji), geta też nie będzie, ale escape`y zostają.

Listowanie plików z bazy danych (nie z listowania dir).



To taki szybki zamysł, a może mamy coś lepszego ? (IMG:style_emoticons/default/smile.gif)


Dzięki!

Ten post edytował Morfi777 5.12.2011, 17:31:33
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 24.08.2025 - 00:04