PHP, Apache Url Rewriting ve HTTP Session kullanarak istenilen dosyalara erişimi kısıtlamak |
||||||
Web sunucunuzda bulunan bazı dosyalara erişimi kısıtlamak için
Url Rewriting Engine kullanmak kolaylık açısından daha iyi bir seçim olabilir. Önce basit bir
Url Rewriting kuralı yazacağız, daha sonra HTTP Session bilgilerine bakarak 'flv' uzantılı dosyaları belli
kullanıcıların
indirebileceği hale getireceğiz.
Normalde web sunucusuna koyulan tüm dosyalar direk olarak adres satırına dosyanın URL adresini yazıp indirebiliriz. Fakat web sunucusunda bulunan her hangi tipte bir dosyanın bu şekilde direk olarak indirilmesini Url Rewriting Engine ve HTPP Session kullanarak kısıtlayabiliriz. Hemen detaylara geçelim : Örneğimizde 'flv' yani flash tipi video dosyalarına erişimi sadece 'premium' rolüne sahip kullanıcıların indirebileceği şekilde kısıtlamak istediğimizi düşünelim ( mesela : www.example.com/file.flv ) . Örneğe başlamadan önce Url Rewriting Engine'i açmış ve Url Rewriting kurallarını biraz bilmeniz gerek. Bunu Apache yerel sunucunuzda (localhost) nasıl yapacağını bilmiyorsanız ilgili yazıma buradan bakabilirsiniz. Adım 1) URL Rewriting Kuralı ile flv uzantılı dosyalara erişimi kontrol etmekApache sunucusu ve PHP ayarlarını kurmuş olduğunu varsayarak işe başlayalım. Önce Apache sunucunuzda bulunan 'htdocs' (ya da 'www_root') klasörü içinde .htaccess uzantılı bir dosya yaratın ve aşağıdaki URL Rewriting kuralını ekleyin. .htaccess dosyasının içeriği :# URL Rewriting motorunu aktif hale getiriyoruz. RewriteEngine On # flv uzantılı dosyalara erişilmek istenildiğinde flv.php isimli dosyayı çalıştırıyoruz. Aynı zamanda dosyanın ismini URL parametresi olarak ekliyoruz. RewriteRule ^/?(.*).flv flv.php?fileName=$1 [NC,L] ![]() Adım 2) HTTP Session ile kullanıcı rolüne göre erişimi kısıtlamakÖrneğimizde gördüğünüz gibi 'flv' uzantılı dosyanın ismini flv.php adlı dosyamıza yolluyoruz. Bu yüzden .htaccess dosyamızın bulunduğu yere flv.php adlı bir dosya yaratalım ve aşağıdaki PHP kodunu ekleyelim:<?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['userName']='ali'; $_SESSION['userRole']='premium'; // İ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']; // Dosyanın uzantısını eklioyuruz. $filePath=$fileName.'.flv'; // Session 'userRole' değişkenini 'premium' ise dosya indirebilsin. if ($_SESSION['userRole']=='premium') { // 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. ?>
Örneğimizde böylece flv uzantılı dosyalara erişimi kısıtlamış olduk. Siz istediğiniz gibi bunu değiştirebilir ve bu mantığı kullanarak dosyaları belli kullanıcılara göre düzenleyebilirsiniz. |
||||||
|
||||||
|
May 2013 (1)
July 2010 (1)
April 2010 (4)
March 2010 (1)
February 2010 (3)
December 2009 (2)
November 2009 (1)
October 2009 (4)
September 2009 (16)
August 2009 (21)
July 2009 (4)
July 2010 (1)
April 2010 (4)
March 2010 (1)
February 2010 (3)
December 2009 (2)
November 2009 (1)
October 2009 (4)
September 2009 (16)
August 2009 (21)
July 2009 (4)
Jquery ile Form ToolTi ..
Mysql ile Türkçe Karak ..
Büyük boyutlu tablolar ..
PHP ile JSON verisi ya ..
ASP.NET ortamında Jque ..
İlk görev yerim ;)
Jquery ile çek bırak R ..
PHP Pear MDB2 modülü i ..
Jquery ve Seçiciler (J ..
NATURAL JOIN , JOIN ON ..
Mysql ile Türkçe Karak ..
Büyük boyutlu tablolar ..
PHP ile JSON verisi ya ..
ASP.NET ortamında Jque ..
İlk görev yerim ;)
Jquery ile çek bırak R ..
PHP Pear MDB2 modülü i ..
Jquery ve Seçiciler (J ..
NATURAL JOIN , JOIN ON ..
Etiketler
| Ajax | Arama-merkezi | Arama-sonuçları | Asp.net | Binary-data | Boyutlandırma | Class | Dinamik | Google | Gridview | Html-parse | Javascript | Jquery | Json | Linq | Linq-to-sql | Php | Resim | Singleton-patten | Tasarım | Tasarım-şablonu | Veritabanı | Veritabanı-işlemleri | Yükleniyor |arama
Loading
sosyal




