Jump to content


Photo

Localizar Pais Do Visitante


  • Faça o login para participar
6 replies to this topic

#1 georgewar

georgewar

    Let's upgrade myself

  • Usuários
  • 169 posts
  • Sexo:Masculino
  • Localidade:Rio de Janeiro - RJ
  • Interesses:PHP - JavaScript

Posted 09/08/2007, 10:51

com certeza vocês já viram quando vai cadastrar em um site e ele automaticamente já seleciona seu pais.
queria saber como fazer.. alguem sabe?

#2 savior

savior

    Campanha [codebox], use ou morra :D

  • Usuários
  • 1229 posts
  • Sexo:Masculino
  • Localidade:Curitiba, PR - Brasil
  • Interesses:Na vida ;P

Posted 09/08/2007, 11:18

Tem algumas coisas aqui no fórum, caso queira saber mais utilize a busca.

Segue um link com um exemplo: LINK

[lastfm] [blog]

Campanha codebox: use-a ou morra!
bfmaster_duran[at]yahoo.com.br


#3 Limiar

Limiar

    Que alerta é esse aí embaixo?

  • Usuários
  • 118 posts
  • Sexo:Masculino
  • Localidade:Alto Paraíso -- GO
  • Interesses:música, belezas naturais, esperanto, fotografia, informática, webdesign, photoshop, dreamweaver, CGI, PHP

Posted 09/08/2007, 11:58

O FF tem um complemento que basta passar o mouse sobre um link e são mostrados o ip e a localização do host.

Caso ajude, o complemento é HostIP.info Geolocation Plugin https://addons.mozil...refox/addon/663

Edição feita por: Paulo Ricardo, 10/08/2007, 20:52.


#4 Paulo Freitas

Paulo Freitas

    ××××××× LRU #456504 ××××××× ××××××× LRM #364686 ×××××××

  • Ex-Admins
  • 5612 posts
  • Sexo:Masculino
  • Localidade:Campinas - SP

Posted 10/08/2007, 20:51

O FF tem um complemento que basta passar o mouse sobre um link e são mostrados o ip e a localização do host.

Caso ajude, o complemento é HostIP.info Geolocation Plugin https://addons.mozil...refox/addon/663

____________
Limiar
http://www.pousadajardimdoeden.com.br

Estamos num fórum de programação amigo. Se o usuário postou aqui, é porque ele procura algo em PHP, não acha? Mais atenção, mais atenção... :ponder:

A propósito, lugar de marketing pessoal é na assinatura, não em cada post. Capice? Está avisado.

[]’s :DAté mais

#5 georgewar

georgewar

    Let's upgrade myself

  • Usuários
  • 169 posts
  • Sexo:Masculino
  • Localidade:Rio de Janeiro - RJ
  • Interesses:PHP - JavaScript

Posted 12/08/2007, 22:32

se ajudar alguem, eu achei isso:
http://ip-to-country...country.csv.zip
trata-se de um csv com a base de faixas de ips do mundo, fiz um php que traduz isso para um banco mysql, aqui:
<?php/* O BANCO DE DADOS DEVE TER SIDO PREVIAMENTE INSTALADO *///faz a checagem de permissao -- ABRE//tempo em segundos$tempo = 300; //5 minutos//limpa a base atualmysql_query("TRUNCATE TABLE ".$tableprefix."ipcountry") or die("Erro ao limpar base atual:<br />".mysql_error());//nome do arquivo csv$arquivo = 'mods/mod_ipcountry/ip-country.csv';//seta o tempo limiteset_time_limit($tempo);//linha atual$row = 1;//abre o arquivo como leitura$handle = fopen ($arquivo,"r");//para o script por 3 segundossleep(5);while (($data = fgetcsv($handle, 100000, ",")) !== FALSE) {	$num = count ($data);	$query = "INSERT INTO ".$tableprefix."ipcountry (faixa_ini, faixa_fin, abrev_2, abrev_3, pais) VALUES (";	for ($c=0; $c < $num; $c++) {		if($c < 4){$query .= "'".addslashes($data[$c])."',";}		else{$query .= "'".addslashes($data[$c])."'";}	}	$query .= ")";	mysql_query($query) or die("Erro ao inserir campo no banco de dados, linha ".$row.":<br />".mysql_error());	echo "Linha $row ok!<br />";	$row++;}fclose ($handle);//indexa as faixas de IP´S//mysql_query("ALTER TABLE ".$tableprefix."ipcountry ADD INDEX (`faixa_ini`, `faixa_fin`)") or die("Erro ao indexar as colunas de faixas de IP's".mysql_error());echo "<br /><br />CONCLUÍDO!!!";?>

e fiz uma funcao para você retornar os resultados, aqui:
<?//esta função retorna os dados do pais do ip de acessofunction dados_ip($ip_com_pontos){//converte o ip para IPv4$long = ip2long($ip_com_pontos);	//checa se é válido	if ($long == -1 || $long === FALSE) {	die('IP inválido!');	} 	//caso seja executa -- ABRE	else {				//chama a prefix da tabela		global $tableprefix;		//formata o IPv4		$ip_number = sprintf("%u", $long);		//faz a consulta		$sql = "SELECT abrev_2, abrev_3, pais FROM ".$tableprefix."ipcountry WHERE $ip_number >= faixa_ini AND $ip_number <= faixa_fin";		$query = mysql_query($sql) or die("Erro ao buscar faixa de ip:<br />".mysql_error());				//dados da busca		$dados = mysql_fetch_array($query);		//retorna o numero de valores encontrados para a consulta		$nresultados = mysql_num_rows($query);				//define sucesso		$sucesso = $nresultados == 0 ? 0 : 1;				$flag = $sucesso == 1 ? strtolower($dados['abrev_2']) : 'none';				//url da imagem		$urlimg = $GLOBALS['gsa_urlbase']."/mods/mod_ipcountry/flags/".$flag.".png";				$dadosderetorno[0] = $sucesso; //se houve retorno		$dadosderetorno[1] = $sucesso == 1 ? $dados['abrev_2'] : 'Indefinido'; //abreviação com 2 letras 		$dadosderetorno[2] = $sucesso == 1 ? $dados['abrev_3'] : 'Indefinido'; //abreviação com 3 letras 		$dadosderetorno[3] = $sucesso == 1 ? ucfirst(strtolower($dados['pais'])) : 'Indefinido'; //pais em ingles		$dadosderetorno[4] = $ip_com_pontos; //IP normal		$dadosderetorno[5] = $ip_number; //IPv4		$dadosderetorno[6] = $urlimg; //caminho completo para imagem do pais				//retorna os dados		return($dadosderetorno);			} //caso seja executa -- FECHA}?>

flws

ahh, tem umas coisinhas do meu sistema, então se alguem for aproveitar deverá retirar algumas coisinhas dos codigos
o banco de dados pode ser criado assim:

//nome da tabela$nomedatabela = $tableprefix."ipcountry";//cria tabela ipcountry $sql = 'CREATE TABLE '.$nomedatabela.' (  `id` int(5) NOT NULL AUTO_INCREMENT,  `faixa_ini` DOUBLE NOT NULL,  `faixa_fin` DOUBLE NOT NULL,  `abrev_2` char(2) collate latin1_general_ci NOT NULL,  `abrev_3` char(3) collate latin1_general_ci NOT NULL,  `pais` varchar(50) collate latin1_general_ci NOT NULL,  PRIMARY KEY (id))';//se criada com sucessoif(mysql_query($sql)){//mostra mensagem finalecho "<li>A tabela <b>".$nomedatabela."</b> foi criada com sucesso!<br>";} //se a tabela não foi criadaelse {die("<li>Erro na criação da tabela ".$nomedatabela.": " . mysql_error() . '<br />');}

Edição feita por: savior, 13/08/2007, 19:45.
Utilize tags codebox!


#6 Massa

Massa

    Turista

  • Usuários
  • 54 posts
  • Sexo:Não informado

Posted 13/08/2007, 19:13

se ajudar alguem, eu achei isso:
http://ip-to-country...country.csv.zip
trata-se de um csv com a base de faixas de ips do mundo, fiz um php que traduz isso para um banco mysql, aqui:

<?php/* O BANCO DE DADOS DEVE TER SIDO PREVIAMENTE INSTALADO *///faz a checagem de permissao -- ABRE//tempo em segundos$tempo = 300; //5 minutos//limpa a base atualmysql_query("TRUNCATE TABLE ".$tableprefix."ipcountry") or die("Erro ao limpar base atual:<br />".mysql_error());//nome do arquivo csv$arquivo = 'mods/mod_ipcountry/ip-country.csv';//seta o tempo limiteset_time_limit($tempo);//linha atual$row = 1;//abre o arquivo como leitura$handle = fopen ($arquivo,"r");//para o script por 3 segundossleep(5);while (($data = fgetcsv($handle, 100000, ",")) !== FALSE) {	$num = count ($data);	$query = "INSERT INTO ".$tableprefix."ipcountry (faixa_ini, faixa_fin, abrev_2, abrev_3, pais) VALUES (";	for ($c=0; $c < $num; $c++) {		if($c < 4){$query .= "'".addslashes($data[$c])."',";}		else{$query .= "'".addslashes($data[$c])."'";}	}	$query .= ")";	mysql_query($query) or die("Erro ao inserir campo no banco de dados, linha ".$row.":<br />".mysql_error());	echo "Linha $row ok!<br />";	$row++;}fclose ($handle);//indexa as faixas de IP´S//mysql_query("ALTER TABLE ".$tableprefix."ipcountry ADD INDEX (`faixa_ini`, `faixa_fin`)") or die("Erro ao indexar as colunas de faixas de IP's".mysql_error());echo "<br /><br />CONCLUÍDO!!!";?>

e fiz uma funcao para você retornar os resultados, aqui:
<?//esta função retorna os dados do pais do ip de acessofunction dados_ip($ip_com_pontos){//converte o ip para IPv4$long = ip2long($ip_com_pontos);	//checa se é válido	if ($long == -1 || $long === FALSE) {	die('IP inválido!');	} 	//caso seja executa -- ABRE	else {				//chama a prefix da tabela		global $tableprefix;		//formata o IPv4		$ip_number = sprintf("%u", $long);		//faz a consulta		$sql = "SELECT abrev_2, abrev_3, pais FROM ".$tableprefix."ipcountry WHERE $ip_number >= faixa_ini AND $ip_number <= faixa_fin";		$query = mysql_query($sql) or die("Erro ao buscar faixa de ip:<br />".mysql_error());				//dados da busca		$dados = mysql_fetch_array($query);		//retorna o numero de valores encontrados para a consulta		$nresultados = mysql_num_rows($query);				//define sucesso		$sucesso = $nresultados == 0 ? 0 : 1;				$flag = $sucesso == 1 ? strtolower($dados['abrev_2']) : 'none';				//url da imagem		$urlimg = $GLOBALS['gsa_urlbase']."/mods/mod_ipcountry/flags/".$flag.".png";				$dadosderetorno[0] = $sucesso; //se houve retorno		$dadosderetorno[1] = $sucesso == 1 ? $dados['abrev_2'] : 'Indefinido'; //abreviação com 2 letras 		$dadosderetorno[2] = $sucesso == 1 ? $dados['abrev_3'] : 'Indefinido'; //abreviação com 3 letras 		$dadosderetorno[3] = $sucesso == 1 ? ucfirst(strtolower($dados['pais'])) : 'Indefinido'; //pais em ingles		$dadosderetorno[4] = $ip_com_pontos; //IP normal		$dadosderetorno[5] = $ip_number; //IPv4		$dadosderetorno[6] = $urlimg; //caminho completo para imagem do pais				//retorna os dados		return($dadosderetorno);			} //caso seja executa -- FECHA}?>

flws

ahh, tem umas coisinhas do meu sistema, então se alguem for aproveitar deverá retirar algumas coisinhas dos codigos
o banco de dados pode ser criado assim:

//nome da tabela$nomedatabela = $tableprefix."ipcountry";//cria tabela ipcountry $sql = 'CREATE TABLE '.$nomedatabela.' (  `id` int(5) NOT NULL AUTO_INCREMENT,  `faixa_ini` DOUBLE NOT NULL,  `faixa_fin` DOUBLE NOT NULL,  `abrev_2` char(2) collate latin1_general_ci NOT NULL,  `abrev_3` char(3) collate latin1_general_ci NOT NULL,  `pais` varchar(50) collate latin1_general_ci NOT NULL,  PRIMARY KEY (id))';//se criada com sucessoif(mysql_query($sql)){//mostra mensagem finalecho "<li>A tabela <b>".$nomedatabela."</b> foi criada com sucesso!<br>";} //se a tabela não foi criadaelse {die("<li>Erro na criação da tabela ".$nomedatabela.": " . mysql_error() . '<br />');}



Utilizo um script bem parecido nas minhas aplicações !!!

Complementando a Função do amigo Georgewar , ...caso vc. queira fazer uma seleção automática de Idioma de seu site , segundo o país do Internauta.
Ex. Países cuja idioma oficial é o Inglês ,....países cuja Idioma oficial é o Espanhol , e Português como Default

Faça dentro da função , um Switch analizando o conteudo da variavel $flag conforme descrito abaixo
switch( $flag ){				case us:	case gb:	case au:	case za:	case jm:	case ne:	case bs:	case gh:	case ca:	case in:	case ie:	case ug:	case tz:	case cm:	case nl:	case ph:	case id:	case ke:	case pk:		$lingua = 'lang_english';		break;			case bo:	case ar:	case cl:	case co:	case cr:	case xxxxxx;	case ec:	case sv:	case es:	case gt:	case hn:	case mx:	case ni:	case pa:	case py:	case pe:	case pr:	case uy:	case ve:		$lingua = 'lang_spanish';		break;					default:		$lingua = 'lang_portuguese_brazil';}

não esqueça de retornar o valor $lingua da função
ex:
$dadosderetorno['lingua'] = $lingua

Este código acima , escolhe entre as linguas Espanhol , Ingles e Portugues como Default.

Feito isso , vc. faz um Include do arquivo (lang_principal.php) com todos os textos utilizados no seu site
include ('language/'.$dadosderetorno['lingua'].'/lang_principal.php');
Onde lang_principal.php é o arquivo de um determinado idioma , colocado na respectiva pasta definida na variavel $lingua do Switch

Este conceito "programático" foi baseado nos scripts de Lingua do Fórum PHPBB , onde em sua concepção , o mais difícil foi , sem dúvida nenhuma , descobrir a lingua oficial de cada pais do Switch,....rs

Quem disse que Open Source não presta ,...rs

Façam bom Proveito

Abs.
Massa

PS: retificando que xxxx foi interpretado como palavrão , xxxx alterado do Case , foi interpretação erronea do querido palavrão "Oráculo Bundowski" cujo pobre país tem estas duas simpáticas letras como como iniciais , mais especificamente ,... C e U

Edição feita por: savior, 13/08/2007, 19:45.
Utilize tags codebox da proxima vez!


#7 georgewar

georgewar

    Let's upgrade myself

  • Usuários
  • 169 posts
  • Sexo:Masculino
  • Localidade:Rio de Janeiro - RJ
  • Interesses:PHP - JavaScript

Posted 14/08/2007, 08:17

boa :)




0 user(s) are reading this topic

0 membro(s), 0 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq