• 20-10-2013, 13:39:04
    #1
    Üyeliği durduruldu
    www.xxx.com dan siteme fopen ile bağlantı kuruluyor

    $_SERVER['HTTP_HOST'] ben ise bu kodu kullanarak gelen bağlantının domain adını tespit edebilirim sanırım ?

    benim istediğim şu şekilde olacak, bir mysql veritabanı oluşturdum bir nevi karaliste gibi

    mysql tablom
    id
    url
    aktif


    url tablosunda yasak sitenin url si yazıyor, sondaki aktif='1' bir değeri alıyorsa http_host'tan gelen bağlantı eşlessin istiyorum yani eşleşip siteye erişemesin aktif="0" sıfır değerinde ise siteye bağlanabilsin yani karalisteden çıksın.

    bunu sanırım yapmak için if döngüsüne felan sokmak gerekiyor ancak aklım tıkandı kaldı, uzman kişiler sanırım zorlanmadan yapacaklardır yardımlarınızı bekliyorum.
  • 20-10-2013, 16:04:50
    #2
    Üyeliği durduruldu
    KONUYA EK

    sanırım http_host değilde http_referer olması gerek değilmi ? siteye bağlantı kuran domaini belirlemek için ?
  • 20-10-2013, 16:51:25
    #3
    Kimlik doğrulama veya yönetimden onay bekliyor.
    alan adını değilde ip adresini öğrenebilirsin. ip adresini ise şu şekilde alabilirsin;
    getenv('REMOTE_ADDR');
  • 20-10-2013, 17:28:09
    #4
    Üyeliği durduruldu
    saintx adlı üyeden alıntı: mesajı görüntüle
    alan adını değilde ip adresini öğrenebilirsin. ip adresini ise şu şekilde alabilirsin;
    getenv('REMOTE_ADDR');
    üstadım cevap yazdığın için öncelikle teşekkür ederim.

    Ben aşağıdaki gibi yaptım incelerseniz ve nerde hata yaptığımı söylerseniz sevinirim, çünkü bu kod çalıştı ancak şöyle çalışıyor xxx.com sitesinden benim siteme tıklayıp gitmesi gerek ozaman çok güzel çalışıyor ancak karşı site benim siteme tıklayıp değil fopen ile bağlanıyor ve siteme referer bırakmıyor ! nasıl referer bıraktırabilirim acaba ?

    $ref= filtre(parse_url($_SERVER['HTTP_REFERER'], PHP_URL_HOST) ); // refererden gelen domaini domainadi.com şeklinde aldım filtreleyerek
    
    $sor=mysql_query("SELECT * FROM siteler where aktif=1 "); // karalistedeki domainler aktif=1 ise yasaklansın dedim
    while($yaz=mysql_fetch_array($sor)){
    
    $url	 = $yaz["url"];
    
    if($ref == $url){ // eğer refererden gelen domain ile veritabanındaki domain aynıysa aşağıdaki echo ile yazdığım yasaklı kelimesi olsun
    
    echo "yasakli";
    
    }else{ // eğer değilse giris serbest olsun
    
    echo "giris serbest";
    }
    
    }
  • 20-10-2013, 18:45:50
    #5
    Domain adını almak istiyorsanız, client'in size bunu göndermesi gerekir. $_SERVER['HTTP_HOST'] kendi hostname'inizi gösterir. Mesela bir lisans sistemi yapıyorsanız file_get_contents('http://benimsitem.com/lic.php?domainname='.urlencode($_SERVER['HTTP_HOST'])); şeklinde en azından get methoduyla domain adını almanız gerekir.

    Ancak $_SERVER["REMOTE_ADDR"] ile karşı tarafın ip adresini alırsınız bu ip adreslerini filtreleyebilirsiniz. Aksi halde client istemediği sürece referer elde edemezsiniz.

    Daha çok ayrıntı verirseniz alternatif yollar gösterebilirim.
  • 20-10-2013, 18:57:02
    #6
    Üyeliği durduruldu
    Dogukan adlı üyeden alıntı: mesajı görüntüle
    Domain adını almak istiyorsanız, client'in size bunu göndermesi gerekir. $_SERVER['HTTP_HOST'] kendi hostname'inizi gösterir. Mesela bir lisans sistemi yapıyorsanız file_get_contents('http://benimsitem.com/lic.php?domainname='.urlencode($_SERVER['HTTP_HOST'])); şeklinde en azından get methoduyla domain adını almanız gerekir.

    Ancak $_SERVER["REMOTE_ADDR"] ile karşı tarafın ip adresini alırsınız bu ip adreslerini filtreleyebilirsiniz. Aksi halde client istemediği sürece referer elde edemezsiniz.

    Daha çok ayrıntı verirseniz alternatif yollar gösterebilirim.
    Aşağıda karşı sitenin bana bağlantı kurmasını sağlayan kodu yazıyorum, yani bana domain adını yollatıyorum.
    <?php
    sitex = "http://".$_SERVER["HTTP_HOST"]."";
    $files = fopen("http://www.istekyapansite.com/sayfa.php?site=$sitex",'r'); 
    while(!feof($files)){  
            $satir = fgets($files); 
            echo "$satir <br />";
    } 
    fclose($files); 
    ?>

    Aşağıdaki kod ise benim sitemin sayfasında olan kod yani sayfa.php yukardaki kodun istek yaptığı yer.

    www.benimsitem.com/sayfa.php?site=$$$

    function filtre($q) {   // Filtre ile gerekli yerleri temizledim
    
    $q = str_replace("http://www.","",$q);     
    $q = str_replace("http://","",$q);  
    
    $q=trim($q);   
    
    return $q;   
    
    }  
    
    
    if($_GET['site']){ 
    include("db.php");
    
    $site = filtre($_GET['site']); // filtreli şekilde  _get ile gelen domain adını yazdırdım
    
    
    $sor=mysql_query("SELECT * FROM karaliste where aktif=1 ");  //aktif 1 ise yasaklansın
    
    $url	 = $yaz["url"];
    
    
    if($site == $url){
    echo "yasakli";
    
    }else{
    
    $sor=mysql_query("SELECT * FROM temizliste ORDER BY id");
    while($yaz=mysql_fetch_array($sor)){
    
    $url	 = $yaz["icerik"];
    
    
    echo $url;
    
    }
    
    }
    }
    }

    $sor=mysql_query("SELECT * FROM karaliste where aktif=1 "); //aktif 1 ise yasaklansın dedim ancak sadece bir tane siteyi yasaklıyor ! halbuki karaliste kolonundaki 10 siteden 5 tanesi aktif=1 yaptım ancak diğer dördünü neden görmüyor ve yasaklamıyor !! ben nerde yanlışlık yaptım anlamıyorum sabahdan beri uğraşıyorum gerçekten.