• 04-06-2010, 00:23:59
    #1
    merhaba arkadaşlar..

    Mesela almanyadan bağlanan biri
    12.129.199.0 - 12.129.199.31
    12.129.251.152 - 12.129.251.159
    32.58.46.0 - 32.58.46.7 vs. gibi ip aralıklarında giriyor.

    Sorum şu, ben siteme giren kişini bu ip ler de olduğunu nasıl anlarım.. eğer bu ip ler arasında ise "Welcome to my site" yazsın (tabi orada farklı uygulama çalıştırtıcam ) yardımlarınızı bekliyorum.

    EDİT::: yada sorumu şöyle sorayım.. mesela bazı siteler Türkiye'den bağlanınca türkçe sayfa, almanyadan bağlanınca almanca sayfa, ispanyadan bağlanınca ispanyolca sayfalar geliyor... bu nasıl yapılır, soruyu bu şekilde de düşünebiliriz.
  • 04-06-2010, 01:33:24
    #2
    öncelikle http://www.countryipblocks.net/ adresinden istediğin ülkelerin iplerini aşağıdaki örnekteki gibi bir metin belgesine ayrı ayrı kaydet.

    http://www.hasangul.com/turkey.txt

    şimdi aşağıdaki kodlarla ziyaretçilerinin seçtiğin ülkelerden olup olmadıklarını anlayabilirsin.

    <?php
    function Turk_mu($url_csv){
    $curl_handle = curl_init();
    curl_setopt($curl_handle, CURLOPT_URL, $url_csv);
    curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, 1);
    $str_fromfile = curl_exec($curl_handle);
    curl_close($curl_handle);
    $range = explode("\n", $str_fromfile);
    
    $ip_addr = getenv(REMOTE_ADDR); 
    $ip_byte = explode('.', $ip_addr);
    $ip_number = (16777216 * (int) $ip_byte[0]) + (65536 * (int) $ip_byte[1]) + (256 * (int) $ip_byte[2]) + ((int) $ip_byte[3]);
    
    for($i = 0; $range[$i] != NULL && $is_positive == NULL; $i++){ 
        $range[$i] = rtrim(ltrim($range[$i])); 
        $ends_addr = explode(',', $range[$i]); 
        $ends_addr[0] = rtrim($ends_addr[0]); 
        $ends_addr[1] = ltrim($ends_addr[1]); 
        $start_ip_byte = explode('.', $ends_addr[0]);
        $end_ip_byte = explode('.', $ends_addr[1]);
        $start_ip_number = (16777216 * (int) $start_ip_byte[0]) + (65536 * (int) $start_ip_byte[1]) + (256 * (int) $start_ip_byte[2]) + ((int) $start_ip_byte[3]);
        $end_ip_number = (16777216 * (int) $end_ip_byte[0]) + (65536 * (int) $end_ip_byte[1]) + (256 * (int) $end_ip_byte[2]) + ((int) $end_ip_byte[3]);
          
        if($ip_number >= $start_ip_number && $ip_number <= $end_ip_number)
                $is_positive = 1;
    }
      
        if($is_positive == 1)
            return true;
        else
            return false;
    }
    
    if(Turk_mu('http://www.hasangul.com/turkey.txt') === true)
          echo 'Turkiye Ziyaretci';
    ?>
    http://www.hasangul.com/kontrol.php adresinde çalışan örneğini görebilirsin. (Türkiyeden girenlere "Turkiye Ziyaretci" yazar, başka ülkelerde boş ekran çıkar.)