 GeoTargeting pode ser utilizado para mostrar anúncios, programas de afiliados, pedaços de conteúdo, ou outra coisa qualquer que lhe passe pela cabeça, só a utilizadores de determinado Pais, Região ou até mesmo cidade.
Realizar GeoTargeting no seu website, pode ser extremamente útil na sua campanha de Internet marketing, no entanto a maioria das pessoas não perde tempo a configurar um script para realizar GeoTargeting.
Imagine-se servir determinado anuncio para uma pessoa que esteja a aceder via Brasil, e outro anuncio para quem esteja a aceder a partir de Portugal. Imagine um programa de afiliados que só funciona com utilizadores do Brasil, para que mostrá-lo a pessoas do resto do mundo? Aproveite todo o seu tráfego da melhor maneira possível.
Como implementar o seu próprio sistema de GeoTargeting?O maior requisito para aplicar um sistema de GeoTargeting é possuir uma base de dados que associe um ip a uma localização geográfica. Existem alguns métodos para conseguir isto. Uns mais simples, outros mais complicados, uns mais eficientes, outros menos eficientes. No final deste artigo a escolha só dependerá de si e das suas necessidades. Método 1. Alojar a Própria Base de Dados de Ip'sEste pode ser o melhor como o pior método, para realizar GeoTargeting. Neste método não tem que se preocupar acerca da base de dados ir offline. Infelizmente esta é a solução que mais recursos necessitará do seu servidor. Imagine por cada visitante que chega ao seu site ele ter que percorrer uma Base de Dados de Ip's... isto para um numero considerável de visitantes (dependendo do servidor) pode colocar o seu servidor de Joelhos! Tendo dito isto passar à implementação. Aqui vou fornecer dois métodos de implementação. Um mais eficaz e mais difícil de implementar e um outro mais fácil de implementar mas menos eficaz em termos de computação. 1.1 Alojar a Própria BD - Forma menos eficaz Vamos utilizar a Base de Dados Gratuita Fornecida pela MaxMind, esta versão possui um grau de fiabilidade até 97%. Aceda à página deles e faça o download do GeoLite Country no formato binário.
Depois necessita de realizar o download da GEO PHP api, php pure module.
Utilize o seguinte código PHP: Mostrar/Esconder código php if(getCodPais()=="PT"){ //código para mostrar em Portugal } elseif (getCodPais()=="BR") { // codigo para mostrar no Brasil } else{ // código para o resto do mundo } function getCodPais() { if (isset($_COOKIE["geoip"])) { $country = $_COOKIE['geoip']; } else { include("geoip.inc"); //defina o seu caminho para o ficheiro geoip.inc $gi = geoip_open("GeoIP.dat",GEOIP_STANDARD); //defina o seu caminho para o ficheiro geoip.dat $ip=IPReal(); $country = geoip_country_code_by_addr($gi, $ip); geoip_close($gi); setcookie("geoip", $country, time()+2592000, "/", ".seusite.com", 0); //Ajusta o Cookie para expirar num mês }//fim els return $country; }//fim getCodPais()function IPReal() { if (!empty($_SERVER['HTTP_CLIENT_IP'])){ $ip=$_SERVER['HTTP_CLIENT_IP']; } elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])){ $ip=$_SERVER['HTTP_X_FORWARDED_FOR']; } else{ $ip=$_SERVER['REMOTE_ADDR']; } return $ip; }
1.2 Alojar a Própria BD - Forma mais eficaz Na página de download da Database fornecida pela MaxMind, realize o download desta no formato CVS.
- Abra o PHPMyAdmin e crie uma Base de Dados chamada 'IPPaises';
- Na tabela IPPaises crie seis novos campos, com as seguintes características:

| *COUNTRY_CODE2 | | | *COUNTRY_NAME |
- Importe o ficheiro CVS do qual fez download anteriormente.
'Insert data from a text file into the table' e verifique-se que possui as seguintes opções:
| Setting | Value | | Fields terminated by | , (uma virgula) | | Fields enclosed by | " (aspas) | | Lines terminated by | \n (barra N) |
De seguida segue-se o Código PHP: Mostrar/Esconder código php if(getCodPais()=="PT"){ //código para mostrar em Portugal } elseif (getCodPais()=="BR") { // codigo para mostrar no Brasil } else{ // código para o resto do mundo } function getCodPais() { if (isset($_COOKIE["geoip"])) { $country = $_COOKIE['geoip']; } else { $DatabaseServer = "localhost"; $Username = "USER_NAME da Base de Dados"; $Password = "PASSWORD da Base de Dados"; $DatabaseName = "IPPaises"; $link = mysql_connect($DatabaseServer, $Username, $Password) or die('Could not connect: ' . mysql_error()); mysql_select_db($DatabaseName) or die('Could not select database'); $IP = IPReal(); $res = mysql_query("SELECT country_code2,country_name FROM IPCountries WHERE IP_FROM<=inet_aton('$IP') AND IP_TO>=inet_aton('$IP')"); $Codes = mysql_fetch_array($res); $CountryCode = $Codes['country_code2']; //PT $CountryName = $Codes['country_name']; //PORTUGAL $country=$CountryCode; mysql_close($link); //limpa setcookie("geoip", $country, time()+2592000, "/", ".seusite.com", 0); //Ajusta o Cookie para expirar num mês } return $country; }//fim getCodPais()function IPReal() { if (!empty($_SERVER['HTTP_CLIENT_IP'])){ $ip=$_SERVER['HTTP_CLIENT_IP']; } elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])){ $ip=$_SERVER['HTTP_X_FORWARDED_FOR']; } else{ $ip=$_SERVER['REMOTE_ADDR']; } return $ip; }
Método 2. Aceder a uma Base de Dados externaO problema do método anterior é que obrigar o seu servidor a pesquisar por ip's entre 60.000 entradas, que pode ser catastrófico para a performance deste. Mesmo com a técnica de atribuir um cookie ao browser para que este só "pesquise" na base de dados a origem do Computador do utilizador, uma vez por mês. Se possuir muitas visitas novas todos os dias, a solução anterior pode ser uma pedra no sapato.
Para isso vamos aceder a uma base de dados externa, através da API do site hostip.info. O problema desta base de dados é que só é viável para pesquisar por pais. A Base de dados da MaxMind com as devidas alterações ao script até por Cidade e Região pesquisa de forma bastante precisa. Esta é a solução que costumo utilizar, para mim e para a maioria dos leitores deverá ser suficiente.
Código PHP: Mostrar/Esconder código php if(getCodPais()=="PT") { //código para mostrar em Portugal } elseif (getCodPais()=="BR") { // código para mostrar no Brasil } else{ // código para o resto do mundo } function getCodPais() { if (isset($_COOKIE["geoip"])) { $country = $_COOKIE['geoip']; } else { $ip=IPReal(); $IPDetail=getCodPais2($ip); $country= $IPDetail['country_code']; setcookie("geoip", $country, time()+2592000, "/", ".seusite.com", 0); //Ajusta o Cookie para expirar num mês } return $country; } function getCodPais2($ipAddr) { ip2long($ipAddr)== -1 || ip2long($ipAddr) === false ? trigger_error("Invalid IP", E_USER_ERROR) : ""; $ipDetail=array(); $loc="http://api.hostip.info/?ip=".$ipAddr; $tryCurl = 0; if(ini_get('allow_url_fopen') != 1) { @ini_set('allow_url_fopen', '1'); } if(ini_get('allow_url_fopen') != 1) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL,$loc); curl_setopt($ch, CURLOPT_FAILONERROR, 1); curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); curl_setopt($ch, CURLOPT_TIMEOUT, 3); $xml = curl_exec($ch); curl_close($ch); } else { $xml = file_get_contents($loc); } preg_match("@<Hostip>(\s)*<gml:name>(.*?)</gml:name>@si",$xml,$match); $ipDetail['city']=$match[2]; //COIMBRA preg_match("@<countryName>(.*?)</countryName>@si",$xml,$matches); $ipDetail['country']=$matches[1]; //PORTUGAL preg_match("@<countryAbbrev>(.*?)</countryAbbrev>@si",$xml,$cc_match); $ipDetail['country_code']=$cc_match[1]; //PT return $ipDetail; } function IPReal() { if (!empty($_SERVER['HTTP_CLIENT_IP'])){ $ip=$_SERVER['HTTP_CLIENT_IP']; } elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])){ $ip=$_SERVER['HTTP_X_FORWARDED_FOR']; } else{ $ip=$_SERVER['REMOTE_ADDR']; } return $ip; }
Gostou deste Artigo?
Subscreva o feed RSS ou reguiste-se na Newsletter do WebLouca, agora!
Categoria:
Se preferir, pode ainda deixar um comentário
Trackback(0)
 |
Fevereiro 25, 2009