2011-03-21 12 views

cevap

10

iyi yinelenen bulamıyor, ama biraz arama php kullanarak PHP oturum izni dayanarak klasör erişimi kısıtlamak için basit bir yolu yoktur bu PHP protect a folder

gibi sonuçlar getirecektir. Geçerli yetkili oturumlar için stub dosyaları oluşturmayı gerektirir (ve silme işlemlerini otomatik hale getirir). PHP Görecek:

if ($user_has_permission_to_download) 
{ 
    touch("tmp/access-" . session_id()); 
} 

Sonra basit bir RewriteRule + RewriteCond'ın sonra yetkilendirme için hizmet edebilir:

göre çerez değeri bulunursa ilk blok izinleri erişim ve yetkilendirme saplama dosya var. İkinci kural başkaları için erişimi engeller.

+0

Teşekkürler! Bu harika bir fikir. Bunu benimsedim ve gereksinimlerime uyacak sekilde degistirildim, ancak çekirdek hala bu harika cevapta oldugu gibi aynidir! – ADTC

2

.htaccess en iyi arkadaşınız. Tüm bunları .htaccess dosyasına inkar et. Ya da .htaccess dosyasını kullanmak istemiyorsanız şifreleyin ve indirme yolunu (LOL!) Her zaman değiştirin.

+0

Bu yanıtı genişletmelisiniz. Şu anda çok yararlı değil. – JohnP

+0

Haklısınız - ama cevabımı silmek istemiyorum. Ne yapmalıyım? – Bytemain

+1

sadece cevabınızı düzenleyebilirsiniz :) – JohnP

3

deny from all 

Sonra o kullanıcı eğer dosyayı hizmet etmek Mesela readfile() için kullandığı bir komut dosyası oluşturmak için aşağıdaki içeriğe sahip, dosyalarla dizinde .htaccess dosyasını koyun bakın yetkilendirildi.

2

Kullanıcı kimliğini doğrulayan bir kullanıcı/oturum açma komut dosyanız olduğunu mu varsayıyorum? Kullanıcı oturum açtığında bir oturum değişkenini denetleyen bir php komut dosyasını kullanarak dosya isteğini iletmek için .htaccess yeniden yazma kurallarını kullanın. elk

şey:

.htaccess 
RewriteEngine on 
RewriteRule ^(.*).(pdf|exe|doc|whatever)$ some-script.php?file=$1.$2 [L] 

<?php 
if(loginCheck()) //function somewhere that checks session if user is logged in 
{ 
    return fopen('../files/' . $_GET['file']); //open and return the requested file 
} 

Bu size yapmanız gerekenler hakkında bir fikir vermek için sadece sözde koddur. Ayrıca doğru dosya başlıklarını da yan yana getirmeniz gerekebilir.

Ve insanların dosya dizinine gitmesini engellemek için, EVERYONE'a erişmesini durdurmak için THAT klasörüne bir .htaccess dosyası koymanızı ve deny from all'u eklemenizi öneririm.

+0

Önemli değil, fakat 'elk' ilkel olmalıdır. ;-) – WraithKenny

İlgili konular