• 30-03-2010, 22:18:12
    #1
    Arkadaşlar merhaba,
    uzun süredir araştırıyorum ancak sanırım doğru kelimeleri bulamadığımdan doğru sonuca ulaşamıyorum.
    Form verilerini işleyen veya querstring verisine göre veritabanından bilgi silen bir php dosyasına sadece o formdan veya sadece kendisine link verilen site içi sayfadan gelindiğinde sayfanın açılmasını ve direk url yazıldığında sayfanın açılmamasını istiyorum.
    internette http_referrer örnekleri var ama aynı zamanda güvenilir olmadığıda yazılmış.
    Bu konuda yardımcı olacak veya bunu en güvenli şekilde nasıl yapabileceğime dair fikri olan varsa çok sevinirim. şimdiden teşekkürler.
  • 30-03-2010, 22:28:08
    #2
    Şimdi hocam sitenizde bir dosya include edilmiş ve siz bunun direk açılmamasını sadece site içinde açılmasını istiyorsunuz doğru anlamış mıyım?
  • 30-03-2010, 22:52:17
    #3
    ilyasbat adlı üyeden alıntı: mesajı görüntüle
    Şimdi hocam sitenizde bir dosya include edilmiş ve siz bunun direk açılmamasını sadece site içinde açılmasını istiyorsunuz doğru anlamış mıyım?
    Öncelikle ilginiz için teşekkürler.
    Sanırım sizin anladığınız şey; wordpress içinde comments.php dosyası var o direk urlden açılmıyor ancak sadece include edildiği sayfada çalışıyor.
    oradaki şu şekilde
    if ('comments.php' == basename($_SERVER['SCRIPT_FILENAME']))
    die ('Please do not load this page directly. Thanks!');

    Benim öğrenmek istediğim ise mesela bir sitemiz var ve kullanıcılar sisteme kendi girdiği konuları silebiliyor, bunuda konunun yanındaki sil linkine tıklayarak yapıyor. bu linkte yazının veritabanındaki id si mevcut ( sil.php?id=5 gibi ) sil.php sayfasında veritabanından bu id nin işaret ettiği satırı siliyor.
    Kötü niyetli birisi çıkıpta buradaki linki kopyalayıp sonra sadece id numarasını değiştirerek diğer bilgileri de silmeye kalkarsa diye sadece o linkten gelindiğinde dosya çalışsın ancak farklı bir şekilde girildiğinde o dosya çalışmasın istiyorum. Eminim bir yerde yanlışım var ancak phpde güvenlik konusunda henüz yeniyim. Yaklaşımım yanlış veya farklı şekilde bunun üstesinden geliniyor olabilir
    yorumlarınızı bekliyorum
  • 30-03-2010, 23:23:25
    #4
    Kimlik doğrulama veya yönetimden onay bekliyor.
    Arkadaşım o silme işleminin yapıldığı dosyada kontrol yaparsın, silinecek id, o üyeye aitse silersin yoksa hata verirsin.

    <?php
    $id = intval($_GET['id']);
    
    $sorgu = 'select ekleyen_uye_id from tablon where id='.$id;
    //sql sorgusunu yap, gelensonuca bak:
    
    if($_SESSION['uye_id'] == $sorgu['ekleyen_uye_id']){
    
      //silme işlemi
    
    }else{
      echo 'Yetkisiz Erişim';
      exit();
    }
    ?>
  • 30-03-2010, 23:34:04
    #5
    metadige adlı üyeden alıntı: mesajı görüntüle
    Arkadaşım o silme işleminin yapıldığı dosyada kontrol yaparsın, silinecek id, o üyeye aitse silersin yoksa hata verirsin.

    <?php
    $id = intval($_GET['id']);
    
    $sorgu = 'select ekleyen_uye_id from tablon where id='.$id;
    //sql sorgusunu yap, gelensonuca bak:
    
    if($_SESSION['uye_id'] == $sorgu['ekleyen_uye_id']){
    
      //silme işlemi
    
    }else{
      echo 'Yetkisiz Erişim';
      exit();
    }
    ?>
    İlginize teşekkür ederim.
    Eğer kişi sisteme üye ise ve kontrol true olarak dönüyorsa
    ve üyemiz bu silme işlemini gerçekleştirmek isterse.

    üyelerin hepsinin iyi niyetli olduğunu düşünemeyiz.
    haksız mıyım?
  • 30-03-2010, 23:45:30
    #6
    Kimlik doğrulama veya yönetimden onay bekliyor.
    cemadam adlı üyeden alıntı: mesajı görüntüle
    İlginize teşekkür ederim.
    üyelerin hepsinin iyi niyetli olduğunu düşünemeyiz.
    haksız mıyım?
    <?php
    $uyeid = (int) $_GET['id'];
    echo ($_SESSION['uye_id'] == $uyeid) ? uye_sil($uyeid) : 'Başkasını silemezsiniz!';
    function uye_sil($uyeid)
    {
    	mysql_query("
    		DELETE FROM uyeler
    		WHERE uye_id = $uyeid");
    }
    ?>
    ...
  • 30-03-2010, 23:46:26
    #7
    Arkadaşım sanırım eklediğim örneği tam olarak anlayamadın. Burada silinmek istenen kaydı önce veritabanından kontrol ediyorsun, eğer ekleyen üye ile silmek isteyen üye aynı kişi ise işlemi yapıyorsun zaten. Değilse hata veriyorsun.
  • 30-03-2010, 23:50:16
    #8
    metadige adlı üyeden alıntı: mesajı görüntüle
    Arkadaşım sanırım eklediğim örneği tam olarak anlayamadın. Burada silinmek istenen kaydı önce veritabanından kontrol ediyorsun, eğer ekleyen üye ile silmek isteyen üye aynı kişi ise işlemi yapıyorsun zaten. Değilse hata veriyorsun.
    Tamam düzenledim hocam. Yanlış anlamışım en başta.