Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Ukrywanie adresu zrodlowego sciaganego pliku
Forum PHP.pl > Forum > PHP
hamlecik
Witam!

Mam taki problem. Nie wiem jak zrobic aby przy sciaganiu pliku nie pokazywalo jego adresu zrodlowego. Wymyslilem sobie to tak:

plik 1.php

[php:1:3774551ec3]<?php
// kod

session_start();

$adres = adres_do_pliku
$_SESSION['status'] = $adres;

?>

<iframe src="2.php" width="400" height="200" frameborder="0">
</iframe>

<?php

// kod
?>[/php:1:3774551ec3]


plik2.php

[php:1:3774551ec3]<?php
// kod

session_start();

if($_SESSION['status']) {


?>

<META HTTP-EQUIV="refresh" content="5; URL=<?php echo $_SESSION['status']; ?>">

<?
} else {

echo "blad";

}

// kod
?>[/php:1:3774551ec3]

Kod moze miec bledy bo wklejam go na szybkiego poniewaz sie spiesze smile.gif
Do powyzszego kodu trzeba jeszcze dodac javascript aby blokowal wyswietlanie adresu na pasku stanu.
Szukam jednak jakiegos bardziej profesjonalnego sposobu. Moze ma ktos jakis pomysl?

Pozdrawiam
FiDO
Mozesz zrobic cos takiego:

dl.php
[php:1:f17ad595c1]
<?php

$file = './files/'.$fname;

header("Cache-control: private");
header("Content-Type: application/octet-stream");
header("Content-Length: ".filesize($file));
header("Content-Disposition: attachment; filename=".basename($file));
header("Connection: Close");

readfile($file);
?>[/php:1:f17ad595c1]

Do tego pliku podajesz jako parametr np. nazwe pliku albo lepiej jakis numer ID, przetwarzasz to, i wysylasz do przegladarki (w sposob podany wyzej) wlasciwy plik.
GeoS
Wypadaloby podniesc odrobine bezpieczenstwo:

[php:1:e39a70c5d2]<?php
// tutaj moja sugestia podnoszaca bezpieczenstwo smile.gif
$file = './files/'.basename($fname);

header("Cache-control: private");
header("Content-Type: application/octet-stream");
header("Content-Length: ".filesize($file));
header("Content-Disposition: attachment; filename=".basename($file));
header("Connection: Close");

readfile($file);
?>[/php:1:e39a70c5d2]
halfik
A jeśli masz taką możliwość pliki możesz trzymać na bazie, zatem bez pośrednictwa skryptu nikt ich nie pobierze.
hamlecik
Dzieki za pomoc. Wszystko dziala tak jak chce.
FiDO
Cytat
Wypadaloby podniesc odrobine bezpieczenstwo:

To byl kawalek (nawet nie polowa) z skryptu ktory uzywam, wkleilem tylko to, bo chodzilo mi zeby pokazac jak przeslac plik smile.gif
Ta gorna wieksza polowa (a jednak troche wiecej bo jakies 5/6 smile.gif ) to zabezpieczenia snitch.gif
GeoS
U siebie mam podobnie - przeslanie naglowkow stanowi cala 1/5 skryptu tongue.gif
hamlecik
Pojawil mi sie nowy problem. Jesli plik do sciagniecia (np plik.zip) mam w innym katalogu niz plik php do jego sciagniecia (np sciagnij.php) to nie moge sciagnac plik.zip.

Np:
plik do sciagniecia: http://localhost/plik.zip
plik php: http://localhost/php/sciagnij.php

Problem pojawia sie nawet po usunieciu funkcji basename().
Jakies sugestie? smile.gif
voytar
Może użyj jako ścieżki do pliku: ../plik.zip

(nie jestem pewien czy zrozumialem Twoj problem]
FiDO
hamlecik: pokaz kod, wrozkami nie jestesmy.
Zreszta podalem Ci wyzej przyklad wlasnie z inna sciezka do plikow (glebiej niz skrypt) i tamto dziala.
Trzecia sprawa.. co znaczy nie moge sciagnac? znowu mamy sie domyslac co jest nie tak? Podal jakis blad czy cokolwiek to odrazu bedzie latwiej Ci pomoc.
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.