Lokalisera och identifiera webbplatsbesökare via IP-adress



  • Vilket land kommer mina besökare ifrån

    Om man vill ha olika webbsidor för olika länder så kan det vara smidigt att kolla var besökaren kommer ifrån och skicka dem till rätt webbsida. Det finns massor med tjänster som hjälper till med detta.

    Geo tjänster

    Web proxy

    Jag har byggt ihop ett litet script där jag använder mig av ipstack för att kolla upp besökarna. Du måste dock skaffa en egen api-nyckel för att detta ska fungera. Du kan sedan testa scriptet med Hidemyass tjänsten.

    <?php
    header('Pragma: no-cache');
    header('Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0');
    header('Expires: Sat, 26 Jul 1997 05:00:00 GMT');
    
    $api_key = '<api nyckel>';
    $base_url = 'exempel.se';
    function fetch($url) {
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 5.1; rv:31.0) Gecko/20100101 Firefox/31.0');
        curl_setopt($ch, CURLOPT_HEADER, 0);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_TIMEOUT, 10);
        $out = curl_exec($ch);
        curl_close($ch);
        return $out;
    }
    $url = 'http://api.ipstack.com/'.$_SERVER['REMOTE_ADDR'].'?access_key='.$api_key.'&fields=country_code';
    $data = json_decode(fetch($url));
    $europe = array('AD', 'AL', 'AT', 'AX', 'BA', 'BE', 'BG', 'BY', 'CH', 'CZ', 'DE', 'DK', 'EE', 'ES', 'FI', 'FO', 'FR', 'GB', 'GG', 'GI', 'GR', 'HR', 'HU', 'IE', 'IM', 'IS', 'IT', 'JE', 'LI', 'LT', 'LU', 'LV', 'MC', 'MD', 'ME', 'MK', 'MT', 'NL', 'NO', 'PL', 'PT', 'RO', 'RS', 'RU', 'SE', 'SI', 'SJ', 'SK', 'SM', 'UA', 'VA');
    
    try {
        if($data->country_code == 'SE') {
            $redirect = 'se';
        } else if (in_array($data->country_code, $europe)) {
            $redirect = 'eu';
        } else {
            $redirect = 'us';
        }
        if(strstr(strtolower($_SERVER['HTTP_USER_AGENT']), "googlebot"))
        {
            $redirect = 'se';
        }
    } catch(Exception $e) {
        $redirect = 'us';
    }
    $redirect_url = 'http://'.$redirect.'.'.$base_url;
    header("Location: ".$redirect_url, true, 301);
    ?>
    

    Bra med detta script som referens. Bara att bygga vidare på den om det behövs 😉


 

Jenkler IT AB org.nr: 559082-6938   073-731 76 64   [email protected]

Ser ut som din anslutning till Jenkler IT AB gick förlorad, vänta medan vi försöker att återansluta.