PHP projelerimizde ayar dosyası kullanmak

Dikkat: Bu yazının yazılma tarihinin üzerinden en az 60 gün geçmiş. İçerisindeki bilgiler güncelliğini yitirmiş olabilir. Yorumları ve güncellemeleri göz önünde bulundurarak yazıyı takip ediniz.

Neden ayar dosyası kullanayım?

Ayar dosyaları yazdığımız projedeki tüm küçük-büyük detayları ayarlayabilmemizi sağlayan basit bir değişken dosyasıdır. Mesela çok güzel bir site yaptık, haber sistemi, forum anket falan feşmekan bir ton küçük büyük bölümler yazdık. Bu bölümlere ait, görünümden tutun, sistemin çalışmasına yönelik değerleri bir dosyada tutup site üzerindeki oynamaları hızlıca, tüm kodla boğuşmadan tek merkezden yönetebiliriz. Haber sayfalarındaki son eklenen kaç haberin gösterileceği, forumdaki konu başlıklarının maksimum karakter sayısı, üye kayıdında, engellenmiş üye adlarından kontrol panelinizdeki menüye kadar çok detaylı değişkenleri bu dosylarda saklayabiliriz. MFYZ.Com'da da aşağıda gösterilene benzer yapıda gelişmiş ve oldukça büyük bir ayar dosyası bulunmaktadır. Zaten çoğu projede de bu tarz ayar dosyaları görüyoruz. Bu makalede basitçe projemize ayar dosyası tanımlama ve bunun işlenip kullanılmasını göreceğiz.

Nasıl yapacağız?

Bunun için 2 şeye ihtiyacımız var. Öncelikle bir ayar dosyası düzenine, Bu ayar dosyası "ayar.conf" adında ve şuna benzer bir yapıda olacak :
# mysql ayarlari
host        = localhost
kullanici   = root
sifre       =
veritabani  = mfyz

# limitler
haber_limit = 5
forum_limit = 10
Bu yapıda basit bir dosya yazıyoruz. # işaretinden sonraki kısımlar yorum anlamına gelmekte ve yorumlanırken gözardı edilmektedir. Bu dosyayı sitemizdeki tüm php dosyalarımızın başında işleteceğimiz küçük bir kod ile yorumlatacağız. Kod şu şekilde :
# ayar dosyasi baglantisi
  $dosya = @fopen( "ayar.conf", "r" );

# ayarlari diziye aktarmak
  while( $satir = @fgets( $dosya, 1024 ) ){
    $satir = ereg_replace("#.*$", "", $satir); // yorum satirlarini gecelim
    list ( $degisken, $deger ) = explode ('=', $satir);

    $degisken = trim ($degisken);
    $deger = trim ($deger);
    if( !empty($degisken) ){
      $ayar[$degisken] = $deger;
    }
  }

# baglantiyi kapatalim
  fclose($dosya);
Bu kodun kısa bir açıklamasını yapmak gerekirse; $dosya değişkeni ile ayar.conf dosyamızı okutuyor ve bir değişkene aktarıyoruz. while ile dosyayı satır satır dönerek $satir değişkenine o andaki satıdaki yazıyı aktarıyoruz. İlk önce satırdaki # işaretinden sonraki kısmı sildirmek için küçük bir düzenli ifade kullanıyoruz. Böylece yorumları gözardı etmiş oluyoruz. Ayar dosyasında da istediğimiz kadar açıklama yazabiliriz. Daha sonra "=" işaretine göre parçalayıp ilk kısmı $degisken değişkenine, değeri de $deger değişkenine atıyoruz. Eğer = işaretinin öncesinde bulunana kısım boş ise bir değişken ve değer belirtmediği için küçük bir kontrolle bunu da atladıktan sonra $ayar dizisine $degisken indisli $deger değerli bir satır ekletiyoruz. Sonuçta ayar dosyasındaki düzgün formdaki satırlardaki değişken ve değerler $ayar dizisine aktarılmış oluyor. Şimdi $ayar dizimize bir göz atalım :
Array
(
  [host] => localhost
  [kullanici] => root
  [sifre] =>
  [veritabani] => mfyz
  [haber_limit] => 5
  [forum_limit] => 10
)
Zaten bundan sonraki kodlarımızda ayar dosyamıza değerler ekleyip $ayar dizisi ile o değerleri edinip kodumuzu geliştireceğiz.

Fakat, güvenlik!

Fakat bu örnekteki bir yapıyı kullanmak biraz sakıncalı olabilir. Çünkü "ayar.conf" dosyası herkesin erişebileceği bir dizinde ise doğrudan indirilip ayar parametreleri kodunuzdaki açıkları ele verebilir. Bu dosyayı .htaccess dosyasında ulaşılamaz yapabilir, başına "." nokta koyarak gizli dosya yapabilir (apache gizli dosyaları yayınlamaz) ya da daha farklı tekniklerle ayar dosyanızı koruma altına alarak işletebilirsiniz.


Hazırlayan : Mehmet Fatih YILDIZ

Yorumlar

Üye Resmi Ferhat
11 Mayıs Pazartesi ´09 22:40
ayar.cof yerine ayar.php kullansak kullanicilar degiskelere erisemiyor ve degiskenleri tanimlamak icin de ayri fonksiyon yazmamiza gerek kalmiyor...(denemedim, sadece tahmin)
Üye Resmi Yuşau
30 Ocak Pazartesi ´12 07:19
<a href='link1.php'>Link 1</a>
<a href='link2.php'>Link 2</a>
<a href='link3.php'>Link 3</a>
<a href='link4.php'>Link 4</a>
<a href='link5.php'>Link 5</a>

diye sıralandırmada linkler tıklandığında URL kısmında link sonuna ?aaa=sss diye görüntüleniyor. Acaba bu işlem nasıl yapılıyor, yardım eder misiniz?
30 Ocak Pazartesi ´12 18:52
Yuşau, linklerinizi sayfa.php?aaa=sss şeklinde veriyorsunuz. Sonra sayfa.php'de $_GET['STRING_QUERY'] değişkenini switch-case veya if kullanarak değerlendirip ona göre içerik basıyorsunuz.
Üye Resmi Recep KARAMANLI
7 Ekim Pazartesi ´13 03:28
güzel bir makele olmuş, emeğinize sağlık. bir kaç bir şey eklemek istedim. ben yazdığım projelerde ayarları php dosyalarında saklıyorum. parse_ini_file fonksiyonu ile, örnek vermek gerekir ise,
<?php
/* genel ayarlar */
host = localhost;

?>

gibi...
Üye Resmi Tuğrul Gençoğlu
5 Mart Cumartesi ´16 15:34
Elinize sağlık.Çok güzel olmuş.
parse_ini_file
fonksiyonu da bu konuda projelere çok yardımcı olabilir.
Yeni Yorum *
İletişim Bilgileri
*
*
E-Posta adresiniz gösterilmeyecektir.
(unut)
Güvenlik Kodu *

Gönderiliyor