Diego Macario Postado Novembro 8, 2010 Denunciar Share Postado Novembro 8, 2010 Olá pessoal, estou com uma duvida, gostaria de implantar no meu site um sistema de detecção de idioma atraves do Ip do usuario,alguém pode me ajudar?Fico no aguardo Obrigado Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 rickayron Postado Novembro 8, 2010 Denunciar Share Postado Novembro 8, 2010 Olá pessoal, estou com uma duvida, gostaria de implantar no meu site um sistema de detecção de idioma atraves do Ip do usuario,alguém pode me ajudar?Fico no aguardo Obrigadoolá tudo bem, procure a biblioteca geo.ip ela permite a localização geografica mas não é muito confiaves quando se trata de localizaçao especifica. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 m3io Postado Novembro 8, 2010 Denunciar Share Postado Novembro 8, 2010 olha ai um script que mudifiquei , zipei pra voce , ta no meu servercybercentro-braganca.pt/~m3io/flags.zipno exemplo tá o que voce precisa, o resto é so por no server , são as class e as flags Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Diego Macario Postado Novembro 8, 2010 Autor Denunciar Share Postado Novembro 8, 2010 olha ai um script que mudifiquei , zipei pra voce , ta no meu servercybercentro-braganca.pt/~m3io/flags.zipno exemplo tá o que voce precisa, o resto é so por no server , são as class e as flagsObrigado amigo vou testar e ver se da certo qualquer coisa posto aqui novamente. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Diego Macario Postado Novembro 8, 2010 Autor Denunciar Share Postado Novembro 8, 2010 olha ai um script que mudifiquei , zipei pra voce , ta no meu servercybercentro-braganca.pt/~m3io/flags.zipno exemplo tá o que voce precisa, o resto é so por no server , são as class e as flagsOlha o erro que aparece.Fatal error: Call to undefined function iptocountry() in /home/rededms/public_html/idioma/exemplo.php on line 4 Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Willian Gustavo Veiga Postado Novembro 8, 2010 Denunciar Share Postado Novembro 8, 2010 Poste o código deste arquivo.Um abraço. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Diego Macario Postado Novembro 8, 2010 Autor Denunciar Share Postado Novembro 8, 2010 Poste o código deste arquivo.Um abraço.Segue o Codigo amigo<?php$IPaddress=$_SERVER['REMOTE_ADDR']; $two_letter_country_code=iptocountry($IPaddress); $three_letter_country_code=$countries[ $two_letter_country_code][0]; $country_name=$countries[$two_letter_country_code][1]; print "Two letters code: $two_letter_country_code<br>"; print "Three letters code: $three_letter_country_code<br>"; print "Country name: $country_name<br>"; $pais = $country_name; // To display flag $file_to_check=BASE_HREF."flags/$two_letter_country_code.gif"; if (file_exists($file_to_check)){ //$band = "<img src=$file_to_check width=30 height=15><br>"; $band = "<img src=".$file_to_check." width=\"30\" height=\"15\"><br>"; }else{ $band = "<img src=".BASE_HREF."flags/noflag.gif\" width=\"30\" height=\"15\"><br>"; }?>Abraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 m3io Postado Novembro 8, 2010 Denunciar Share Postado Novembro 8, 2010 esqueci de dizer esseBASE_HREF que esta ai é o meu site como constante faca define("BASE_HREF", "http://seusite.com");ou simplesmente elimine $band = "<img src=".BASE_HREF."flags/noflag.gif\" width=\"30\" height=\"15\"><br>";para$band = "<img src="flags/noflag.gif\" width=\"30\" height=\"15\"><br>"; Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Willian Gustavo Veiga Postado Novembro 8, 2010 Denunciar Share Postado Novembro 8, 2010 A função iptocountry() deve estar definida (existir) em algum lugar. Verifique se você está executando o script correto ou se você tem todos os arquivos necessários.Onde você obteve este script?Um abraço. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 m3io Postado Novembro 8, 2010 Denunciar Share Postado Novembro 8, 2010 ups, esqueci de passar a funcao pra vocefunction iptocountry($ip) { $numbers = preg_split( "/\./", $ip); include("ip_files/".$numbers[0].".php"); $code=($numbers[0] * 16777216) + ($numbers[1] * 65536) + ($numbers[2] * 256) + ($numbers[3]); foreach($ranges as $key => $value){ if($key<=$code){ if($ranges[$key][0]>=$code){$two_letter_country_code=$ranges[$key][1];break;} } } if ($two_letter_country_code==""){$two_letter_country_code="unkown";} return $two_letter_country_code; } Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Diego Macario Postado Novembro 8, 2010 Autor Denunciar Share Postado Novembro 8, 2010 esqueci de dizer esseBASE_HREF que esta ai é o meu site como constante faca define("BASE_HREF", "http://seusite.com");ou simplesmente elimine $band = "<img src=".BASE_HREF."flags/noflag.gif\" width=\"30\" height=\"15\"><br>";para$band = "<img src="flags/noflag.gif\" width=\"30\" height=\"15\"><br>";Ola amigo segui a sua orientação e modifiquei no codigo mas não obtive sucesso.<?php$IPaddress=$_SERVER['REMOTE_ADDR']; $two_letter_country_code=iptocountry($IPaddress); $three_letter_country_code=$countries[ $two_letter_country_code][0]; $country_name=$countries[$two_letter_country_code][1]; print "Two letters code: $two_letter_country_code<br>"; print "Three letters code: $three_letter_country_code<br>"; print "Country name: $country_name<br>"; $pais = $country_name; define (".BASE_HREF.","http://rededms.com.br/idioma/"); // To display flag $file_to_check=BASE_HREF."flags/$two_letter_country_code.gif"; if (file_exists($file_to_check)){ //$band = "<img src=$file_to_check width=30 height=15><br>"; $band = "<img src=".$file_to_check." width=\"30\" height=\"15\"><br>"; }else{ $band = "<img src=".BASE_HREF."flags/noflag.gif\" width=\"30\" height=\"15\"><br>"; }?> continua o erroFatal error: Call to undefined function iptocountry() in /home/rededms/public_html/idioma/exemplo.php on line 4Obrigado amigo Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Diego Macario Postado Novembro 8, 2010 Autor Denunciar Share Postado Novembro 8, 2010 ups, esqueci de passar a funcao pra vocefunction iptocountry($ip) { $numbers = preg_split( "/\./", $ip); include("ip_files/".$numbers[0].".php"); $code=($numbers[0] * 16777216) + ($numbers[1] * 65536) + ($numbers[2] * 256) + ($numbers[3]); foreach($ranges as $key => $value){ if($key<=$code){ if($ranges[$key][0]>=$code){$two_letter_country_code=$ranges[$key][1];break;} } } if ($two_letter_country_code==""){$two_letter_country_code="unkown";} return $two_letter_country_code; }Amigo desculpe mais minha duvida ainda continua, com o script que você me passou foi possivel detectar o pais do Ip.ficando assim no Browser:Two letters code: BRThree letters code:Country name: agora como eu faço para o idioma do site ser detectado pelo IP. Ps. ip do Brasil=Idioma=PT, ip dos EUA=Idioma+EN. etc...aqui esta o link do site[link]http://www.filapremium.info[link] que eu já tenho a vesao EN dele agora tenho que fazer ele detectar pelo ip se é PT ou EN.Entende minha Duvida amigo?Obrigado fico no aguardo Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 m3io Postado Novembro 8, 2010 Denunciar Share Postado Novembro 8, 2010 tinha tb 2 erros no codigofunction iptocountry($ip) { $numbers = preg_split( "/\./", $ip); include("ip_files/".$numbers[0].".php"); $code=($numbers[0] * 16777216) + ($numbers[1] * 65536) + ($numbers[2] * 256) + ($numbers[3]); foreach($ranges as $key => $value){ if($key<=$code){ if($ranges[$key][0]>=$code){$two_letter_country_code=$ranges[$key][1];break;} } } if ($two_letter_country_code==""){$two_letter_country_code="unkown";} return $two_letter_country_code; } define ("BASE_HREF","http://rededms.com.br/idioma/"); $IPaddress=$_SERVER['REMOTE_ADDR']; $two_letter_country_code=iptocountry($IPaddress); $three_letter_country_code=$countries[ $two_letter_country_code][0]; $country_name=$countries[$two_letter_country_code][1]; print "Two letters code: $two_letter_country_code<br>"; print "Three letters code: $three_letter_country_code<br>"; print "Pais: $country_name<br>"; $pais = $country_name; // To display flag $file_to_check=BASE_HREF."flags/$two_letter_country_code.gif"; if (file_exists($file_to_check)){ //$band = "<img src=$file_to_check width=30 height=15><br>"; $band = "<img src=".$file_to_check." width=\"30\" height=\"15\"><br>"; }else{ $band = "<img src=".BASE_HREF."flags/noflag.gif\" width=\"30\" height=\"15\"><br>"; }verifique que a pastaflags e ip_files estao junto do ficheiro onde voce escreve o scriptpor exemplo se voce meter o script no index.phpo http://rededms.com.br/index.php fica na mesma directoria que http://rededms.com.br/ip_files e http://rededms.com.br/flags Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Diego Macario Postado Novembro 8, 2010 Autor Denunciar Share Postado Novembro 8, 2010 tinha tb 2 erros no codigofunction iptocountry($ip) { $numbers = preg_split( "/\./", $ip); include("ip_files/".$numbers[0].".php"); $code=($numbers[0] * 16777216) + ($numbers[1] * 65536) + ($numbers[2] * 256) + ($numbers[3]); foreach($ranges as $key => $value){ if($key<=$code){ if($ranges[$key][0]>=$code){$two_letter_country_code=$ranges[$key][1];break;} } } if ($two_letter_country_code==""){$two_letter_country_code="unkown";} return $two_letter_country_code; } define ("BASE_HREF","http://rededms.com.br/idioma/"); $IPaddress=$_SERVER['REMOTE_ADDR']; $two_letter_country_code=iptocountry($IPaddress); $three_letter_country_code=$countries[ $two_letter_country_code][0]; $country_name=$countries[$two_letter_country_code][1]; print "Two letters code: $two_letter_country_code<br>"; print "Three letters code: $three_letter_country_code<br>"; print "Pais: $country_name<br>"; $pais = $country_name; // To display flag $file_to_check=BASE_HREF."flags/$two_letter_country_code.gif"; if (file_exists($file_to_check)){ //$band = "<img src=$file_to_check width=30 height=15><br>"; $band = "<img src=".$file_to_check." width=\"30\" height=\"15\"><br>"; }else{ $band = "<img src=".BASE_HREF."flags/noflag[code] .gif\" width=\"30\" height=\"15\"><br>"; }verifique que a pastaflags e ip_files estao junto do ficheiro onde voce escreve o scriptpor exemplo se voce meter o script no index.phpo http://rededms.com.br/index.php fica na mesma directoria que http://rededms.com.br/ip_files e http://rededms.com.br/flagsComo eu disse antes amigo muito obrigado pelo tempo que você tomou tentando me ajudar, mas minha duvida é estaagora como eu faço para o idioma do site ser detectado pelo IP. Ps. ip do Brasil=Idioma=PT, ip dos EUA=Idioma+EN. etc...aqui esta o link do site http://www.filapremium.info que eu já tenho a vesao EN dele agora tenho que fazer ele detectar pelo ip se é PT ou EN.Entende minha Duvida amigo?Obrigado fico no aguardo Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 m3io Postado Novembro 8, 2010 Denunciar Share Postado Novembro 8, 2010 $two_letter_country_code=iptocountry($IPaddress);$three_letter_country_code=$countries[ $two_letter_country_code][0];$country_name=$countries[$two_letter_country_code][1];echo $two_letter_country_code ////// ex: PT, BR, EN, USecho $three_letter_country_code ///// ex: PTBecho $country_name ////ex: Portugal, Brasil, Espanhaé isso que ele faz se te ajudar Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Leonardo Di Sarli Postado Janeiro 12, 2011 Denunciar Share Postado Janeiro 12, 2011 mudei o código para fazer o que você querno exemplo.php<?php include('ip_files/countries.php'); function iptocountry($ip) { $numbers = preg_split( "/\./", $ip); $numbers[0] =(int)$numbers[0]; include("ip_files/".$numbers[0].".php"); $code=($numbers[0] * 16777216) + ($numbers[1] * 65536) + ($numbers[2] * 256) + ($numbers[3]); foreach($ranges as $key => $value){ if($key<=$code){ if($ranges[$key][0]>=$code){$two_letter_country_code=$ranges[$key][1];break;} } } if ($two_letter_country_code==""){$two_letter_country_code="unkown";} return $two_letter_country_code; } $IPaddress=$_SERVER['REMOTE_ADDR']; //$IPaddress="186.205.6.60"; $two_letter_country_code=iptocountry($IPaddress); $three_letter_country_code=$countries[ $two_letter_country_code][0]; $country_name=$countries[$two_letter_country_code][1]; $country_lang=$countries[$two_letter_country_code][2]; $country_lang_long=$countries[$two_letter_country_code][3]; if(!isset($country_lang)){ $country_lang="en"; $country_lang_long="en_US"; } print "IP: $IPaddress<br>"; print "Two letters code: $two_letter_country_code<br>"; print "Three letters code: $three_letter_country_code<br>"; print "Country name: $country_name<br>"; print "Country language: $country_lang<br>"; print "Country language long: $country_lang_long<br>"; $pais = $country_name; // To display flag $file_to_check="flags/$two_letter_country_code.gif"; if (file_exists($file_to_check)){ $band = "<img src=".$file_to_check." width=\"30\" height=\"15\"><br>"; }else{ $band = "<img src=\"flags/noflag.gif\" width=\"30\" height=\"15\"><br>"; } echo "Flag: ".$band; ?> para funcionar corretamente você deve incluir os códigos de idioma que deseja usar para os países no arquivo /ip_files/countries.php exemplo na linha do Brasil: está assim: "BR" => array("BRA","Brazil"), inclua os idiomas "BR" => array("BRA","Brazil","pt","pt_BR"),faça isso para os países que quiser especificar o idioma.os países que estiverem sem esses dados automaticamente receberão o idioma inglês dos USAse quizer baixar os arquivos modificados lá vai. http://www.mediafire.com/download.php?9wzwati1qenfs49Abraços a todos! :rolleyes: Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Diego Macario
Olá pessoal, estou com uma duvida, gostaria de implantar no meu site um sistema de detecção de idioma atraves do Ip do usuario,alguém pode me ajudar?
Fico no aguardo
Obrigado
Link para o comentário
Compartilhar em outros sites
15 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.