PHP ile htaccess Doğrulama

6 Cevap php

Ben üzerinde çalışıyorum mevcut web sitesi, ben bilinmezlik dışındaki bazı güvenlik yöntemi olması gerçekten güzel olurdu indirmek kullanıcılar için dosyaların bir dizin var ;)

Bir kullanıcı girerken sanki htaccess PHP ile oturum açma bilgilerini temin için herhangi bir yolu olup olmadığını merak ediyordum.

Herkes PHP kullanarak kullanıcı indirme sabitlemek için daha iyi bir yol bilen varsa Alternatif, bu da kabul edilebilir. Benim googling tüm görüş olmayan anlayışlı kullanıcının bakış açısından, iki kez onlar web sitesini kullanmak her zaman oturum gibi, gerçekten yararlı değildir "sadece htaccess kullanmak" çıkıyor.

PHP ile sadece bunu yapmanın en iyi benim tahminim geçici bir web erişilebilir klasöre kopyalayın, sonra web kök yukarıdaki dosyaları saklamak için, ama bu son derece verimsiz görünüyor ve indirme bittikten sonra ben bunları kaldırmak için herhangi bir yol kadar düşünemedim .

Not: Ben bu üzerinde çalıştığı sunucu sahibi ben değilim ve buna ssh erişimi yok.

6 Cevap

Dosyaları (Gb) çok büyük değilse her zaman dosyanın indirmek için readfile kullanabilirsiniz. Bu modda önce kullanıcının kimlik denetimi kontrol ve kullanıcı ok çıktı dosya içeriği bulunuyor, aksi takdirde giriş sayfasını onu gönderebilirsiniz.

Eğer doğrulanmış değil kimse onları erişebilirsiniz emin olabilirsiniz, bu yöntem ile (. Htaccess ile) korunan dizinine dosyalarınızı koyabilirsiniz.

Ben de olur web kök dışında bir klasörde saklayın, ya da. Htaccess ile korunan bir klasöre ve daha sonra kullanıcı giriş ve istedi bir dosya indirmek için izin verildi eğer işaretli bir php komut dosyası var. O ise, o zaman sadece pass the file through kullanıcıya.

Php.net de bağlantılı sayfasından örnek:

Örnek 1 ikili dosyaları ile) (fpassthru kullanma

<?php

// open the file in a binary mode
$name = './img/ok.png';
$fp = fopen($name, 'rb');

// send the right headers
header("Content-Type: image/png");
header("Content-Length: " . filesize($name));

// dump the picture and stop the script
fpassthru($fp);
exit;

?>


Başkası doğrudur, doğru içerik türü, rapor etme konusunda bir açıklama yaptı. Çoğu zaman, benim kendi deneyim, ben zaten bunu biliyorum, ya da oldukça kolay dosya uzantısını kullanabilirsiniz. Aksi takdirde her zaman finfo_file bakmak için deneyebilirsiniz. Bu sayfada siz de görüntüler için özellikle neler yapabileceğini hakkında bazı yorumlar da vardır.

you should use a php script to control the access. create a dir outside the webroot or inside the webroot with a .htaccess where you location the download files.

Webroot iyidir outsite.

Eğer onlar içinde bulunan eğer hiç kimse bu dosyalara erişebilirsiniz emin olmak gerekir.

sonra armut sınıf lib almak. sınıf http_download.

Bu sınıfı kullanarak birçok avantajı vardır.

  • Aralıkları (kısmi indirme ve sürdürme)
  • Temel önbelleğe alma yetenekleri
  • Temel azaltma mekanizması
  • On-the-fly gzip sıkıştırma
  • Archive_Tar ve Archive_Zip aracılığıyla on-the-fly oluşturulan arşivlerin teslim
  • Göndermeden önce tüm verileri okumak için gerek kalmadan PgSQL LOB'lar gönderme

Eğer başlıklarını kendinizi ayarlamak zorunda ve http "aralık" desteği yok çünkü herhangi bir yönlendirme filepointer oder readfile kullanmamalısınız.

erişim kısıtlamaları hakkında size oturum yöneticisi, parola, çerçeve, forum vb kullanabilirsiniz

pear - http_download http://pear.php.net/package/HTTP_Download

SO bu url kodlanmış dize (doğru olan) kodlar, ancak PEAR-anasayfa böyle değil çünkü, url kopyalamanız gerekir.

Neden tekerleği yeniden icat? Yüklemek ve özelleştirmek için oldukça kolay olan, File Thingy bir göz atın. Başka bir şey varsa, kimlik doğrulama adımı gerçekleştirmek öğrenmek için kaynak eğitim görebilirsiniz.

  1. Sen yüklenen dosyaları yerine, bir dosya içinde saklayarak, daha iyi ve daha güvenli, bence depolamak için MySQL kullanabilirsiniz. Sadece Google örneğin "MySQL php upload".
  2. Sen çok zahmetli, kullanıcıların tablodan, bir kullanıcı o klasörü erişen her zaman bir PHP komut dosyası kullanarak htaccess dosyası oluşturabilirsiniz.

Ben ilk seçeneğin daha iyi olduğunu düşünüyorum.

Kullan X-SendFile! Lütfen sunucusu için bir tane var iyi bir şans var yani Apache, Lighty ve nginx için uzantıları var.

Eğer uzatma yüklü sonra, PHP komut dosyası kullanarak kullanıcının kimliğini, ve sonra başlık ekleyebilirsiniz:

header ('X-SendFile', '/ yol / / dosya');

PHP betik bittiği zaman, sizin için dosya akışı websunucusu tetikleyecektir. Diğer iş için PHP sürecini boşaltır, çünkü, örneğin FastCGI ile birlikte PHP kullanıyorsanız bu özellikle etkilidir.

Tersyüz etmek