Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Ukrywanie pliku
lukasz^mar
post
Post #1





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 7.10.2006

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


Napisałem oto taki mały skrypcik (tu uproszczona wersja), który po podaniu metodą get parametrów $plik oraz $kod (w praktyce - specjalny link, np.: www.adres-serwisu.pl/$plik=plik&$kod=kod) - sprawdza ważnośc kodu (w bazie danych) i w zależności od wyniku sprawdzenia przekierowuje na żądany plik - czyli taki prosty, mały system udostępniania plików za pomocą kodów dostępu:

<?php
$db_login = "login";
$db_pass = "haslo";
$download_directory = "./download/";

if(isset($_GET[$plik])and isset($_GET[$kod])){

$plik = strip_tags($_GET[plik]);
$kod = strip_tags($_GET[kod]);

$polaczenie = mysql_pconnect("localhost", $db_login, $db_pass);
$db = mysql_select_db("baza");
///////////////////////////////////////////////////////////////////
/////// Sprawdzam czy jest kod jeszcze nieuzyty ////////
///////////////////////////////////////////////////////////////////
$zapytanie = "SELECT * FROM kody WHERE kod = '$kod' and program = '$plik' and data_uzycia IS NULL";
$wynik = @mysql_query($zapytanie);

// znaleziono jeszcze nieuzywany kod:
if (mysql_num_rows($wynik) > 0)
{
$lokacja = $download_directory.$plik.".zip";
header("Location: $lokacja");
} else{
// Tu obsluga blednego kodu
}// koniec if nieuzyty kod

} // koniec if isset
?>


Skrypt spelnia swoje zadanie - natomiast chodzi mi o to jak zabezpieczyc pliki w katalogu download, by nie byly dostepne bezposrednio, tylko z poziomu skryptu? Chodzi mi o to, by nie mozna bylo do niego dojsc wpisujac po prostu adres w przegladarce: www.adres-serwisu.pl/download/plik.zip
Jedyne co potrafilem zrobic, to wlaczenie Options -Indexes na serwerze, ale co jesli ktos pozna nazwe katalogu?
Czy jest to wogole mozliwe? Probowalem bawic sie prawami dostepu - serwis hostingu poradzil mi by ustawic prawa katalogu CHMOD na 600, ale to nie dziala - skrypt tez sie wywala wtedy.

Bede wdzieczny za podpowiedz
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 1)
Sabistik
post
Post #2


Administrator wortalu


Grupa: Przyjaciele php.pl
Postów: 960
Pomógł: 39
Dołączył: 21.10.2003
Skąd: Kraków

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


W katalogu z plikami utworz plik .htaccess z:
Kod
deny from all


a za pomoca swojego kodu
  1. <?php
  2. if (mysql_num_rows($wynik) > 0)
  3. {
  4. #$lokacja = $download_directory.$plik.".zip";
  5. #header("Location: $lokacja");
  6.  
  7. #zamiast tego wstawiasz header z odpowiednim typem pliku
  8. #a potem wypluwasz np za pomoca readfile() okreslony plik.
  9. #chyba cos w tym stulu
  10.  
  11.  header('Content-Description: File Transfer');
  12.  header('Content-Type: application/force-download');
  13.  header("Content-Disposition: attachment; filename="".basename("download".$plik)."";");
  14.  
  15.  header('Content-Length: ' . filesize("download".$plik));
  16. readfile("download".$plik);
  17. }
  18. ?>

wrr kaszania sie sleshe i " przez forum ale przyklady masz w manuallu readfile" title="Zobacz w manualu php" target="_manual
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 22.08.2025 - 01:46