dosya indirme için dolaylı yol

5 Cevap

benim web sitesinde bir indirme bölümü oluşturmak gerekir, ama endişe gibi, benim kullanıcıların sadece benim sunucuda benim dosya paylaşımı önlemek için, dolaylı bağlantıları ile dosyaları indirebilirsiniz istiyorum

örneğin,

http://mysite.com/download/12.zip

karşı

http://mysite.com/download/12

is there a way in php karşıdo so ?

5 Cevap

Kamu html alanı dışında gerçek dosyaları depolamak, sonra PHP komut sadece özel konumdan uygun başlıkları (Content-Type, Content-Length, İçerik-Disposition), ve nihayet readfile () dosya göndermek.

Eğer bir indirme onların başka bir sayfa geliyor olmadığından emin olmak için izin vermeden önce $ _SERVER ['HTTP_REFERER'] değerini kontrol içine bakmak isteyebilirsiniz.

Şeklinde sadece bunu gizleyerek gelince

yoursite.com/download.php?file=filename

Sonra kod sadece readfile () gizli bir dizinde bir dosyanın içeriğini -. Eğer gerçekten endişe eğer htaccess ile fiziksel erişimi inkar edemez, ya da bir dizin adının başlayabilirsiniz. dışında tekrar erişimi durdurmak hangi. Bu bilerek (veya tahmin) yolu yok olacak gibi gizli bir dizin adı olsa gerçekten gerekli değil.

Eğer herhangi bir veritabanı erişimi yapıyoruz ve indirmek için büyük dosyaları sunuyoruz eğer bağlantı süresi boyunca 'açık' olarak kabul edilecek gibi bir yan not olarak bunu bir on dakikalık bile (readfile önce veritabanı bağlantısı () kapatmanız gerekir indirmek) ve bu durumda maksimum bağlantı sınırını vurmak çok kolay.

reko_t burada nokta var.

Belgeniz root / var / www / mysite içinde yani ise / var / www / files demek gibi bir klasörü kullanabilirsiniz. Bu web dosyaları ulaşılmaz yapacaktır. Sonra php bir indirme komut dosyası oluşturmak zorunda. Eğer göreli yolları ($ dosya = realpath (".. / Files / $ fileid. $ FileExt") ;) kullanmanız gerekiyorsa kullanın mutlak yolunu oluşturmak için realpath kullanabilirsiniz.

Php.net üzerinde readfile belgelerinde kullanıcı yorumlarına bir göz atın ve readfile_chunked fonksiyonu için bak. Ben kendi kodunda bu işlevi kullanıyorum. Çok faydalı.

Siz son kullanıcı için dosya yalak php akarsu olabilir. Bu mümkün gizlemek ve aynı zamanda dosyalarınızı korumak yapacak.

Dosya yalak php akışı nasıl oldukça çok örnek olacak aşağı kaydırma eğer php header page bir göz atın. Bunların çoğu sadece kopyalamak ve kullanmak için koyabilirsiniz.

Ben (artan karmaşıklığı sırayla) düşünebilirsiniz olurlar önlemek için bazı yöntemler.

  1. $ _SERVER ['HTTP_REFERER'] kontrol edin; sitenize ait veya boş ise, download izin; diğer siteye aitse, indir inkar.

  2. Kullanıcı listesini ziyaret ettiğinde oturumda rasgele bir kimlik Mağaza ve indirme script okudum.

  3. Rastgele bir ID ile geçici bir bağlantı oluşturmak: / download-4Gaw4MWfTH6dB9UgKILSFc2UlnIPRhMv/12.zip

(Ben size örnek ne anlama geldiğini emin değilim ama URL'den dosya uzantısını kaldırarak pek bir güvenlik önlemidir.)