Dosya indirmede yetkilendirme nasıl yapılır

merhaba arkadaslar dosya sunucunuz var yada herhangi bir yere dosya yüklediniz ama urlsini bulan herhesin bu dosya yada resmi indirmesini engellemek istiyorsunuz.

bunun bir cok yöntemi var fakat ben size en basit yöntemle nasıl yaparsınız bunu php ve htacces dosyası ile yapmayı göstereceğim

ilk olarak documenUpload adında bir klasörünüz var ve siteadi.com/documentUpload/hasanaylas.jpg uzantılı bir dosyasınız mevcut

buna direk ulasımı engellemek için ilk olarak htacces dosyası oluşturmanız

RewriteEngine On 
RewriteRule ^(.*)?(.*)$ dosya.php?fileName=$1&$2 [QSA,L]

yukarıdaki htaccess dosyasında ilk olarak sunu dedik

siteadi.com/documentUpload/hasanaylas.jpg?sifre=asdasdl2k3jksfds uzantılı ben sana dosya gönderecem sen bunu dosya.php ye gönder

dosya.php ye gelen değerleri yakalıyoruz.

<?php
// Kullanıcı bilgilerini session üzerinden taşıyacağımız için sessin_start() 
// fonksiyonunu  kodun en başına ekliyoruz.
session_start();

// Örnek olması amacıyla session 'userRole' değişkenine üstün kullanıcı rolü anlamına gelen 'premium' değerini veriyoruz.
// Normalde session değişkenleri kullanıcı siteye Login olduğu zaman oluşturulur
// ama burada sadece örnek olması amacıyla session bilgilerini burada oluşturuyoruz.

$_SESSION['email'];


// İndirilecek dosyanın adını get metoduyla alıyoruz.
// Daha önce yazdığımız Url Rewrite engine kuralımız çalışacağı için 
// fileName değişkenine dosyanın ismi otomatik olarak atanmış olacak.
$fileName= $_GET['fileName'];
$token= $_GET['token'];

// Dosyanın uzantısını eklioyuruz.
$filePath=$fileName;


// burada şifreli dosya geldi ve şifreyi karsılayıp eşitmi bakıyoruz
if  ($token==algoritmafonksinyonun($filePath))

{
    // Dosyanın varlğını chek ediyoruz.
    if (file_exists($filePath))
    {
        // Dosyayı açıyoruz
        if ($fh = fopen($filePath, 'r'))
        
        {
            // Dosyayı içeriğini okuyoruz.
            $data = fread($fh, filesize($filePath));
            // Download edebilmesi için dosya içerik tipini 
            // HTTP Header'a ekliyoruz 
            header("Content-type: video/flv;\n");
            // Dosyayı alıcıya yolluyoruz.
            echo $data;    
        }
        // Açtığımız dosyayı kapatıyoruz.
        fclose($fh);
    }
    else
        echo "Dosya Bulunamadi !"; // Dosya bulunadı ise kullanıcıya bunu gösteriyoruz.
}
else
    echo "Dosyayi indirme yetkiniz yok !"; // Eğer kullanıcının rolü 'premium' değilse dosya indirme yetkiniz yok diye kullanıcıya bunu gösteriyoruz.
?>

siteadi.com/documentUpload/hasanaylas.jpg bu sekilde bir istek gelirse artık ulasamayacaksınız.

ben birtane dosya uzantımdan yola cıkarak benzersiz şifre yada token oluşturacak bir fonksiyon yazdım. bu fonksiyonla her dosyanın benzersiz token ı olmuş oldu. dosya php de bu tokeni yakalıyorum. ve tokeni cözüp işliyorum. bu sayede her dosya kendi şifresiyle cözülüp iniyor.

takılanlar olursa yardımcı olurum.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir