Kodları lütfen aşağıdaki butonları kullanarak renklendirin. Örnek: <php> echo "Selam Dünya"; </php>
Yardım
karakter kaldı

define ve defined niçin kullanılır?

if (!defined("XXXX")) { die("Access Denied"); }


genelde php sayfaların başında bu şekil bir kod var

Biraz araştırdım ayarlar kısmında define true vb. şeklinde bir sabit tanımlanıyor ve diğer sayfa başlarında üstteki gibi yazılıyor
Bu işlemin fonksiyonu nedir?
güzenlik mi? sunucudan gelen bir istek olup olmadığı falan mı kontrol ediliyor?
+0
-0
Cevaba KatılıyorumKatılmıyorum
Cevap Yaz Yorum Yaz Arşivime Ekle Takip Et

Cevaplar

  • Mehmet adlı üyenin fotoğrafı
    12 yıl önce yazılmış
    15 cevap - 0 soru
    define bir sabit değişken tanımlamak için kullanılır ve bu sabit değişken bir kez tanımlanır, tanımlandıktan sonra bir daha kod içerisinde değiştirilemez. bu yüzden hem güvenlik hem de bir kez tanımlanması gereken değerler için kullanılabilir.
    örnek ve ayrımı anlamak adına:

    define("isim", "mehmet");
    define("isim", "ali");
    echo isim;


    çıktısı mehmet olacaktır.
    ancak
    $isim = "mehmet";
    $isim = "ali";
    
    echo $isim;

    sonucu ise ali olacaktır.
    • zyber adlı üyenin fotoğrafı zyber
      tamam onda bir sorun yok onu anladık
      aşağıdaki gibi her sayfanın başında kullanmanın mantığı-işlevi nedir?

      if (!defined("XXXX")) { die("Access Denied"); }


      dikkatini çekerim orada defined var define değil ve if else ile true-false bir değer arıyor hatta ünlem işareti koyarakta olumsuza çevrilmiş sonra hata mesajı...
      12 yıl önce yazılmış
    • zyber adlı üyenin fotoğrafı zyber
      http://www.sanalkurs.net/php-dosyasina-direk-erisimi-engellemek-124.html
      burada konuyla ilgili bir açıklama var.
      Sanırım bu kodun olduğu sayfaya direk olarak adres çubuğuna yazıp ulaşamıyorsun. Sunucu/site üzerinde var olan bir link üzerinden gelerek ulaşılmasını sağlıyor gibi...
      12 yıl önce yazılmış
    • Mehmet adlı üyenin fotoğrafı Mehmet
      biliyorsun ki register_globals güvenlik açısından risk taşıyabilir.
      şöyle bir örnek vereyim.

      if (!isset($xxx)) die('access denied');

      yaptığın zaman ve register_globals değeri sunucu ya da siten için açılmış durumdaysa ya da database içerisinden geldiğinde yazımında bir değişken gibi kullanımı söz konusu ise aşılabilir. bir önceki soruda tek tırnak ya da çift tırnak olayındaki güvenlik bu demek esasen.
      eğer sen burada normal değişken değilde sabit değişken kullanmış olursan hiç bir güvenlik riski oluşturmaz. çünkü define'nin değişken adını request metoduyla almıyorsun ve sonradan de değiştirilemiyor.
      12 yıl önce yazılmış
  • uls adlı üyenin fotoğrafı
    12 yıl önce yazılmış
    65 cevap - 10 soru
    orada yapılan, XXXX değeri tanımlanmadıysa sayfayı gösterme muhabbeti. muhtemelen bu XXXX değeri sistemin genel güvenliği için tanımlanmak zorunda olan bir sabit.

    mesela bir header sayfan var, bu sayfada XXXX sabitini tanımladın. bir de bu header'ı çektiğin birkaç altsayfan var. bu kodu alt sayfaların başına eklersen, bu alt sayfalar header çağırılmadan tek başlarına çalıştırılamazlar.

    bu epey kabaca bir örnek tabi ama genel mantık bu.