inforsis 1 Denunciar post Postado Novembro 12, 2007 Boa Tarde a todos! Então vamos a um simples script para Redirecionar um site que seja dividio em idioma no exemplo usarei inglês e português. Conceitos Explode Array getenv O Script: <? $ip = getenv("REMOTE_ADDR"); $array_ip = explode(".", $ip); if ($array_ip[0] == "189" || $array_ip[0] == "200" || $array_ip[0] == "201") Header ("Location: portugues.php"); else Header ("Location: ingles.php"); ?> Entendendo o script: $ip = getenv("REMOTE_ADDR");Pegamos o ip com a função getevnv("REMOTE_ADDR") e implicamos o valor para variavel $ip. Aplicamos a função explode para assim separarmos o IP por partes a serem dividas pelo . (ponto) Porque pelo ponto? Pois sabemos que a mascara de IP é: XXX.XXX.XXX.XXX Então para redirecionar iremos usar apenas a primeira parte do IP pois temos a faixa de IP do Brasil como iniciandas por 189, 200 e 201 (podem adicionar outros inicios). Colocamos o valor da execução da função explode no array $array_ip. Então agora basta usar o if para verificar se a primeira parte do array é igual ao valor de uma das faixas brasileira. if ($array_ip[0] == "189" || $array_ip[0] == "200" || $array_ip[0] == "201") E direcionar para a página em portuguës. Header ("Location: portugues.php"); Caso não seja um ip iniciado com uma faixa brasileira então mandando para o site em ingles. else Header ("Location: ingles.php"); Básicamente é isso. Caso implementem melhor o código postem o resultado. Ou se surgir alguma dúvida post. ;) FONTE: php.net Agradescimento: jeronymo Compartilhar este post Link para o post Compartilhar em outros sites
Juninho14 0 Denunciar post Postado Novembro 29, 2007 mto bom o script, mas é 100% garantido que a faixa de ips de todos os servidores do brasil são esses ai? Compartilhar este post Link para o post Compartilhar em outros sites
inforsis 1 Denunciar post Postado Novembro 30, 2007 100% garantido que a faixa de ips de todos os servidores do brasil são esses ai? Juninho14, Boa Noite!Assim garantir que 100% de todos os ip´s do Brasil a faixa é essa é complicado. Mais o script é apenas uma lógica que facilita bastante, bom você pode adicionar o inicio de outras faixas de ip vinda do Brasil. Mais no caso desse script o mais indicado seria você ter um idioma default (padrão) que no caso do exemplo acima é o inglês se não se encaixa a nenhuma faixa ele vai para o default. http://forum.imasters.com.br/public/style_emoticons/default/natal_wink.gif Sugrindo dúvida é só postar. Compartilhar este post Link para o post Compartilhar em outros sites
terra 1 Denunciar post Postado Abril 28, 2011 100% garantido que a faixa de ips de todos os servidores do brasil são esses ai? Juninho14, Boa Noite! Assim garantir que 100% de todos os ip´s do Brasil a faixa é essa é complicado. Mais o script é apenas uma lógica que facilita bastante, bom você pode adicionar o inicio de outras faixas de ip vinda do Brasil. Mais no caso desse script o mais indicado seria você ter um idioma default (padrão) que no caso do exemplo acima é o inglês se não se encaixa a nenhuma faixa ele vai para o default. <img src='http://forum.imasters.com.br/public/style_emoticons/<#EMO_DIR#>/natal_wink.gif' class='bbc_emoticon' alt=':natal_wink:' /> Sugrindo dúvida é só postar. reavivando este velho topico, coloquei esse codigo na index.php mas esta dado loop de redirecionamento, no meu caso estou fazendo por cidade. aguardo qualquer ajuda. Compartilhar este post Link para o post Compartilhar em outros sites
Deleu 0 Denunciar post Postado Abril 28, 2011 Acho meio tiro no pé usar dessa forma, até porque agora estamos saindo do IPv4 e migrando para o IPv6, daí o script iria por água abaixo. Compartilhar este post Link para o post Compartilhar em outros sites
lucas_imasters 0 Denunciar post Postado Maio 5, 2011 Eu redireciono o meu site com a classe geoplugin. Querem que eu poste? Compartilhar este post Link para o post Compartilhar em outros sites
mangakah 217 Denunciar post Postado Maio 6, 2011 Prefiro para isso usar as soluções a MaxMind. Banco de dados com IPs em relação aos países (99.5% de acertos) http://www.maxmind.com/app/geoip_country API para PHP: http://www.maxmind.com/app/php Compartilhar este post Link para o post Compartilhar em outros sites
Privilége Sites 0 Denunciar post Postado Fevereiro 19, 2014 Bom dia galera, precisando de ajuda!!!tenho um site assimwww.minhaloja.com.br - (vazia aguardando index redirecionador)www.minhaloja.com.br/portugueswww.minhaloja.com.br/francewww.minhaloja.com.br/spainwww.minhaloja.com.br/englisho script que me indicaram foi o abaixo, mas sempre me encaminha para o padrao(caso não ache o IP) english:<?$ip = getenv("REMOTE_ADDR");$array_ip = explode(".", $ip);if ($array_ip[0] == "189" || $array_ip[0] == "200" || $array_ip[0] == "201" | $array_ip[0] == "32" | $array_ip[0] == "63" | $array_ip[0] == "64" | $array_ip[0] == "65" | $array_ip[0] == "66" | $array_ip[0] == "67" | $array_ip[0] == "72" | $array_ip[0] == "85" | $array_ip[0] == "139" | $array_ip[0] == "143" | $array_ip[0] == "144" | $array_ip[0] == "146" | $array_ip[0] == "147" | $array_ip[0] == "150" | $array_ip[0] == "152" | $array_ip[0] == "155" | $array_ip[0] == "157" | $array_ip[0] == "161" | $array_ip[0] == "164" | $array_ip[0] == "170" | $array_ip[0] == "189"| $array_ip[0] == "192" | $array_ip[0] == "194" | $array_ip[0] == "195" | $array_ip[0] == "198"| $array_ip[0] == "204"| $array_ip[0] == "206" | $array_ip[0] == "207"| $array_ip[0] == "209" )Header ("Location: portugues/index.php");if ($array_ip[0] == "21" | $array_ip[0] == "66" | $array_ip[0] == "67" | $array_ip[0] == "69" | $array_ip[0] == "72" | $array_ip[0] == "80" | $array_ip[0] == "81" | $array_ip[0] == "82" | $array_ip[0] == "83" | $array_ip[0] == "84" | $array_ip[0] == "85" | $array_ip[0] == "86" | $array_ip[0] == "87" | $array_ip[0] == "88" | $array_ip[0] == "89" | $array_ip[0] == "112" | $array_ip[0] == "130" | $array_ip[0] == "138" | $array_ip[0] == "139" | $array_ip[0] == "144" | $array_ip[0] == "146" | $array_ip[0] == "147" | $array_ip[0] == "150" | $array_ip[0] == "155" | $array_ip[0] == "156" | $array_ip[0] == "157" | $array_ip[0] == "158" | $array_ip[0] == "159" | $array_ip[0] == "160" | $array_ip[0] == "161" | $array_ip[0] == "163" | $array_ip[0] == "192" | $array_ip[0] == "193" | $array_ip[0] == "194"| $array_ip[0] == "195" | $array_ip[0] == "196" | $array_ip[0] == "198" | $array_ip[0] == "199" | $array_ip[0] == "204"| $array_ip[0] == "205"| $array_ip[0] == "206" | $array_ip[0] == "207" | $array_ip[0] == "209" | $array_ip[0] == "212" )Header ("Location: spain/index.php");if ($array_ip[0] == "19" || $array_ip[0] == "61" || $array_ip[0] == "62" | $array_ip[0] == "64" | $array_ip[0] == "64" | $array_ip[0] == "128" | $array_ip[0] == "129" | $array_ip[0] == "130" | $array_ip[0] == "131" | $array_ip[0] == "132" | $array_ip[0] == "134" | $array_ip[0] == "137" | $array_ip[0] == "138" | $array_ip[0] == "139" | $array_ip[0] == "140"| $array_ip[0] == "141" | $array_ip[0] == "143"| $array_ip[0] == "144" | $array_ip[0] == "145" | $array_ip[0] == "146" | $array_ip[0] == "147" | $array_ip[0] == "148" | $array_ip[0] == "149" | $array_ip[0] == "150" | $array_ip[0] == "152" | $array_ip[0] == "155" | $array_ip[0] == "157" | $array_ip[0] == "158" | $array_ip[0] == "159" | $array_ip[0] == "195" | $array_ip[0] == "212" )Header ("Location: france/index.php");elseHeader ("Location: english/index.php");?> Compartilhar este post Link para o post Compartilhar em outros sites
Ademilson Nunes 14 Denunciar post Postado Fevereiro 19, 2014 pode usar curl passando o ip do usuário para este site http://www.iplocationfinder.com/ ai é só direcionar de acordo com o pais retornado. Compartilhar este post Link para o post Compartilhar em outros sites
Privilége Sites 0 Denunciar post Postado Fevereiro 19, 2014 Caro Ademilson Nunes teria como me ajudar nesse script? Compartilhar este post Link para o post Compartilhar em outros sites
Ademilson Nunes 14 Denunciar post Postado Fevereiro 19, 2014 Testa ai é só um exemplo, precisa melhorar, adaptar a sua necessidade enfim.Veja se isso te ajuda. <?php $ip = getenv("REMOTE_ADDR"); $url = 'http://www.iplocationfinder.com/'.$ip; $ch = curl_init(); curl_setopt( $ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; rv:1.7.3) Gecko/20041001 Firefox/0.10.1" ); curl_setopt( $ch, CURLOPT_URL, $url ); curl_setopt( $ch, CURLOPT_FOLLOWLOCATION, true ); curl_setopt( $ch, CURLOPT_ENCODING, "" ); curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true ); curl_setopt( $ch, CURLOPT_AUTOREFERER, true ); curl_setopt( $ch, CURLOPT_SSL_VERIFYPEER, false ); curl_setopt( $ch, CURLOPT_CONNECTTIMEOUT, 5 ); curl_setopt( $ch, CURLOPT_TIMEOUT, 5 ); curl_setopt( $ch, CURLOPT_MAXREDIRS, 10 ); $content = curl_exec( $ch ); curl_close ( $ch ); $dom = new DomDocument(); $dom->loadHTML( $content ); $td = $dom->getElementsByTagName( 'td' ); $country = trim($td->item(7)->nodeValue); switch ($country) { case 'Brazil': Header ("Location: portugues/index.php"); break; case 'Spain': Header ("Location: spain/index.php"); break; case 'France': Header ("Location: france/index.php"); break; default: Header ("Location: english/index.php"); break; } Compartilhar este post Link para o post Compartilhar em outros sites
Privilége Sites 0 Denunciar post Postado Fevereiro 19, 2014 Resultado: Warning: curl_setopt() [function.curl-setopt]: CURLOPT_FOLLOWLOCATION cannot be activated when safe_mode is enabled or an open_basedir is set in /home/corte/public_html/index.php on line 8Warning: Cannot modify header information - headers already sent by (output started at /home/corte/public_html/index.php:8) in /home/corte/public_html/index.php on line 28 ---------------------------------------------------- x ----------------------------------------------------------- Vou olhar o php.ini aqui Compartilhar este post Link para o post Compartilhar em outros sites
Ademilson Nunes 14 Denunciar post Postado Fevereiro 19, 2014 Sim verifique se possui a extensão instalada no seu php e se a mesma se encontra habilitada em seu php.ini Compartilhar este post Link para o post Compartilhar em outros sites
Privilége Sites 0 Denunciar post Postado Fevereiro 20, 2014 Boa tarde, show de bola consegui aqui, porem tipo a america do Sul toda vai pro ingles... tentei colocar mais a Argentina porem não consegui! Como faria nesse caso? Tipo colocar toda america do sul com espanhol padrao. <?php $ip = getenv("REMOTE_ADDR"); $url = 'http://www.iplocationfinder.com/'.$ip; $ch = curl_init(); curl_setopt( $ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; rv:1.7.3) Gecko/20041001 Firefox/0.10.1" ); curl_setopt( $ch, CURLOPT_URL, $url ); curl_setopt( $ch, CURLOPT_FOLLOWLOCATION, true ); curl_setopt( $ch, CURLOPT_ENCODING, "" ); curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true ); curl_setopt( $ch, CURLOPT_AUTOREFERER, true ); curl_setopt( $ch, CURLOPT_SSL_VERIFYPEER, false ); curl_setopt( $ch, CURLOPT_CONNECTTIMEOUT, 5 ); curl_setopt( $ch, CURLOPT_TIMEOUT, 5 ); curl_setopt( $ch, CURLOPT_MAXREDIRS, 10 ); $content = curl_exec( $ch ); curl_close ( $ch ); $dom = new DomDocument(); $dom->loadHTML( $content ); $td = $dom->getElementsByTagName( 'td' ); $country = trim($td->item(7)->nodeValue); switch ($country) { case 'Brazil': Header ("Location: portugues/index.php"); break; case 'Spain': Header ("Location: spain/index.php"); break; case 'France': Header ("Location: france/index.php"); break; case 'Argentina': Header ("Location: spain/index.php"); break; default: Header ("Location: english/index.php"); break; } Compartilhar este post Link para o post Compartilhar em outros sites
Ademilson Nunes 14 Denunciar post Postado Fevereiro 20, 2014 Na minha opinião o correto seria tratar cada caso separadamente. No entanto poderia usar o default como spain/index.php assim qualquer localidade diferente de : Brasil, França, EUA seria redirecionado para o espanhol . switch ($country) { case 'Brazil': Header ("Location: portugues/index.php"); break; case 'Spain': Header ("Location: spain/index.php"); break; case 'France': Header ("Location: france/index.php"); break; case 'United States': Header ("Location: english/index.php"); break; default: Header ("Location: spain/index.php"); break; } Compartilhar este post Link para o post Compartilhar em outros sites
Privilége Sites 0 Denunciar post Postado Fevereiro 20, 2014 É uma alternativa, mas o restante do mundo que é muito maior que a America do Sul veria em Espanhol... esse modo da Argentina seria errado dizer que não funcionaria para sei lá uns 6 paises? Argentina, chile, uruguai, o mexico. Ou o oposto, criar Inglaterra, Suiça, Russia, e mais alguns para aparecer como english Compartilhar este post Link para o post Compartilhar em outros sites
Ademilson Nunes 14 Denunciar post Postado Fevereiro 20, 2014 Como eu disse, se for seguir a lógica imposta no script você vai precisar tratar cada caso separadamente, criar um para cada pais da America do sul e deixar o "english/index.php" como o padrão. Enfim foi por isso que usei switch para dar mais clareza na hora de tratar os casos. Faz um teste, trata todos os países da América do Sul como você tinha feito com a Argentina e volte o "english/index.php" como padrão. Creio que seja a melhor saída até por que caso o cURL falhe e não retorne nada na variável ele será redirecionado para o site em inglês correto? Ao menos a lógica é esta, seria bacana deixar em lugar visível uma caixa de seleção para alterar o idioma caso o usuário deseje. Pois se o redirecionamento não funcionar corretamente o usuário poderá trocar a linguagem manualmente. Compartilhar este post Link para o post Compartilhar em outros sites
Cassiano José 2 Denunciar post Postado Fevereiro 20, 2014 Curl sempre desenrolando tudo né Ademilson? ashauhsua Bom script :clap: Compartilhar este post Link para o post Compartilhar em outros sites