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.