makssie 0 Denunciar post Postado Novembro 14, 2014 Esse é o código: script language="JavaScript" src="http://j.maxmind.com/app/geoip.js"></script> <script> variaveljs = geoip_region_name(); </script> <?php function normalize ($string) { $a = 'ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõöøùúûýýþÿŔŕ'; $b = 'aaaaaaaceeeeiiiidnoooooouuuuybsaaaaaaaceeeeiiiidnoooooouuuyybyRr'; $string = utf8_decode($string); $string = strtr($string, utf8_decode($a), $b); $string = strtolower($string); return utf8_encode($string); } //$record = geoip_record_by_name($ip); $var = "<script>document.write(variaveljs)</script>"; //$region = strtoupper(geoip_region_name_by_code('BR', $record['region'])); $region = normalize($var); function getUf($region){ switch ($region) { case 'Acre': return 'AC'; break; case 'Alagoas': return 'AL'; break; case 'Amapa': return 'AP'; break; case 'Amazonas': return 'AM'; break; case 'Bahia': return 'BA'; break; case 'Ceara': return 'CE'; break; case 'Distrito Federal': return 'DF'; break; case 'Espirito Santo': return 'ES'; break; case 'Goias': return 'GO'; break; case 'Maranhao': return 'MA'; break; case 'Mato Grosso': return 'MT'; break; case 'Mato Grosso do Sul': return 'MS'; break; case 'Minas Gerais': return 'MG'; break; case 'Para': return 'PA'; break; case 'Paraiba': return 'PB'; break; case 'Parana': return 'PR'; break; case 'Pernambuco': return 'PE'; break; case 'Piaui': return 'PI'; break; case 'Rio de Janeiro': return 'RJ'; break; case 'Rio Grande do Norte': return 'RN'; break; case 'Rio Grande do Sul': return 'RS'; break; case 'Rondonia': return 'RO'; break; case 'Roraima': return 'RR'; break; case 'Santa Catarina': return 'SC'; break; case 'Sao Paulo': return 'SP'; break; case 'Sergipe': return 'SE'; break; case 'Tocantins': return 'TO'; break; default: return 'ACRE'; break; } } echo getUf($region); o problema dele é o seguinte. Quando eu dou echo no $region (Como sou de São Paulo) aparece "Sao Paulo" (Depois de ter utilizado a função de tirar os acentos). Mas quando dou echo no getUf($region) aparece o return do Default que é ACRE.... Sendo que está tudo certo sem acento, sem espaço... Enfim, o que fazer? Compartilhar este post Link para o post Compartilhar em outros sites
ExtremsX 58 Denunciar post Postado Novembro 14, 2014 2 coisa: 1 - Não precisa do break nessas horas. 2 - De um var_dump em $region para ter certeza do que está chegando Compartilhar este post Link para o post Compartilhar em outros sites
makssie 0 Denunciar post Postado Novembro 14, 2014 2 coisa: 1 - Não precisa do break nessas horas. 2 - De um var_dump em $region para ter certeza do que está chegando string(43) "Sao Paulo" A region tá sendo "Sao Paulo" Mas era para ser trocada para SP quando volto com a função e volta para a opção do default. :/ Compartilhar este post Link para o post Compartilhar em outros sites
ExtremsX 58 Denunciar post Postado Novembro 14, 2014 function getUf($region){ $region = trim($region); switch ($region) { case 'Acre': return 'AC'; break; case 'Alagoas': return 'AL'; break; case 'Amapa': return 'AP'; break; case 'Amazonas': return 'AM'; break; case 'Bahia': return 'BA'; break; case 'Ceara': return 'CE'; break; case 'Distrito Federal': return 'DF'; break; case 'Espirito Santo': return 'ES'; break; case 'Goias': return 'GO'; break; case 'Maranhao': return 'MA'; break; case 'Mato Grosso': return 'MT'; break; case 'Mato Grosso do Sul': return 'MS'; break; case 'Minas Gerais': return 'MG'; break; case 'Para': return 'PA'; break; case 'Paraiba': return 'PB'; break; case 'Parana': return 'PR'; break; case 'Pernambuco': return 'PE'; break; case 'Piaui': return 'PI'; break; case 'Rio de Janeiro': return 'RJ'; break; case 'Rio Grande do Norte': return 'RN'; break; case 'Rio Grande do Sul': return 'RS'; break; case 'Rondonia': return 'RO'; break; case 'Roraima': return 'RR'; break; case 'Santa Catarina': return 'SC'; break; case 'Sao Paulo': return 'SP'; break; case 'Sergipe': return 'SE'; break; case 'Tocantins': return 'TO'; break; default: return 'ACRE'; break; } } Compartilhar este post Link para o post Compartilhar em outros sites
makssie 0 Denunciar post Postado Novembro 14, 2014 Tentei dar o trim para tirar os espaços e não foi tbm. string(43) "[/size]Sao Paulo" [/size] region deu : ACRE[/size] Que problema estranho, to tentando de tudo e nada :'( Compartilhar este post Link para o post Compartilhar em outros sites
ExtremsX 58 Denunciar post Postado Novembro 15, 2014 cara, ta na cara que tem algo errado nessa string, veja que ela tem 43 caracteres (mostrada no var_dump), mesmo depois do trim, ela ficou com 43? você deu o var_dump depois de usar o trim? Se nada resolver tente, troque isso aqui pelo trim: $region = preg_replace('/[^a-zA-Z ]*/', '', $region); Compartilhar este post Link para o post Compartilhar em outros sites
makssie 0 Denunciar post Postado Novembro 17, 2014 cara, ta na cara que tem algo errado nessa string, veja que ela tem 43 caracteres (mostrada no var_dump), mesmo depois do trim, ela ficou com 43? você deu o var_dump depois de usar o trim? Se nada resolver tente, troque isso aqui pelo trim: $region = preg_replace('/[^a-zA-Z ]*/', '', $region); Agora está aparecendo o seguinte no vardump string(35) "scriptdocumentwritevariaveljsscript" region deuACRE obs com o trim aparece 43 mas mostrando "sao paulo" Compartilhar este post Link para o post Compartilhar em outros sites
ExtremsX 58 Denunciar post Postado Novembro 17, 2014 depois de usar o preg_replace apareceu essa string enorme? Me fale o resultado desses dois var_dump: <?php function getUf($region){ var_dump($region); $region = preg_replace('/[^a-zA-Z ]*/', '', $region); var_dump($region); switch ($region) { // resto do codigo Compartilhar este post Link para o post Compartilhar em outros sites
makssie 0 Denunciar post Postado Novembro 17, 2014 depois de usar o preg_replace apareceu essa string enorme? Me fale o resultado desses dois var_dump: <?php function getUf($region){ var_dump($region); $region = preg_replace('/[^a-zA-Z ]*/', '', $region); var_dump($region); switch ($region) { // resto do codigo string(43) "Sao Paulo" string(35) "scriptdocumentwritevariaveljsscript" Fiz um negócio aqui mostrando o vardump de várias possibilidades, se liga. Quando uso a função criada normalize na variavel aparece o seguinte string(43) "Sao Paulo" Quando uso trim na variavel aparece o seguinte: string(43) "Sao Paulo" Quando uso o preg_replace na variavel aparece o seguinte string(35) "scriptdocumentwritevariaveljsscript" Quando uso strtoupper na variavel aparece o seguinte string(43) "" /\ Esse não mostra nada entre aspas. Lembrando que a variavel é $var = "<script>document.write(variaveljs)</script>"; Será que por ser algum retorno de um javascript que está dando esse problema? :/ Compartilhar este post Link para o post Compartilhar em outros sites
ExtremsX 58 Denunciar post Postado Novembro 17, 2014 O resultado da função abaixo foi exatamente esse (o código está igual?): <?php function getUf($region){ var_dump($region); // string(43) "Sao Paulo" $region = preg_replace('/[^a-zA-Z ]*/', '', $region); var_dump($region); // string(35) "scriptdocumentwritevariaveljsscript" Compartilhar este post Link para o post Compartilhar em outros sites
makssie 0 Denunciar post Postado Novembro 17, 2014 O resultado da função abaixo foi exatamente esse (o código está igual?):<?phpfunction getUf($region){var_dump($region); // string(43) "Sao Paulo"$region = preg_replace('/[^a-zA-Z ]*/', '', $region);var_dump($region); // string(35) "scriptdocumentwritevariaveljsscript" Sim, exatamente. E sim, o código está igual. <script language="JavaScript" src="http://j.maxmind.com/app/geoip.js"></script> <script> variaveljs = geoip_region_name(); </script> <?php function normalize ($string) { $a = 'ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõöøùúûýýþÿŔŕ'; $b = 'aaaaaaaceeeeiiiidnoooooouuuuybsaaaaaaaceeeeiiiidnoooooouuuyybyRr'; $string = utf8_decode($string); $string = strtr($string, utf8_decode($a), $b); $string = strtolower($string); return utf8_encode($string); } //$record = geoip_record_by_name($ip); $var = "<script>document.write(variaveljs)</script>"; //$region = strtoupper(geoip_region_name_by_code('BR', $record['region'])); $region = normalize($var); function getUf($region){ var_dump($region); // string(43) "Sao Paulo" $region = preg_replace('/[^a-zA-Z ]*/', '', $region); var_dump($region); // string(35) "scriptdocumentwritevariaveljsscript" switch ($region) { case 'Acre': return 'AC'; case 'Alagoas': return 'AL'; case 'Amapa': return 'AP'; case 'Amazonas': return 'AM'; case 'Bahia': return 'BA'; case 'Ceara': return 'CE'; case 'Distrito Federal': return 'DF'; case 'Espirito Santo': return 'ES'; case 'Goias': return 'GO'; case 'Maranhao': return 'MA'; case 'Mato Grosso': return 'MT'; case 'Mato Grosso do Sul': return 'MS'; case 'Minas Gerais': return 'MG'; case 'Para': return 'PA'; case 'Paraiba': return 'PB'; case 'Parana': return 'PR'; case 'Pernambuco': return 'PE'; case 'Piaui': return 'PI'; case 'Rio de Janeiro': return 'RJ'; case 'Rio Grande do Norte': return 'RN'; case 'Rio Grande do Sul': return 'RS'; case 'Rondonia': return 'RO'; case 'Roraima': return 'RR'; case 'Santa Catarina': return 'SC'; case 'Sao Paulo': return 'SP'; case 'Sergipe': return 'SE'; case 'Tocantins': return 'TO'; default: return 'ACRE'; } } echo 'region deu' .getUf($region); Compartilhar este post Link para o post Compartilhar em outros sites
ExtremsX 58 Denunciar post Postado Novembro 17, 2014 Você ta chamando isso de um Javascript? ou algo do gênero? Compartilhar este post Link para o post Compartilhar em outros sites
makssie 0 Denunciar post Postado Novembro 17, 2014 Você ta chamando isso de um Javascript? ou algo do gênero? Sim. <script language="JavaScript" src="http://j.maxmind.com/app/geoip.js"></script> <script> variaveljs = geoip_region_name(); $var = "<script>document.write(variaveljs)</script>"; Se eu der var_dump no $var vai aparecer string(43) "Sao Paulo" Compartilhar este post Link para o post Compartilhar em outros sites
ExtremsX 58 Denunciar post Postado Novembro 17, 2014 me manda o codigo de geoip_region_name(), parece que ela ta gerando algum tipo de lixo Compartilhar este post Link para o post Compartilhar em outros sites
makssie 0 Denunciar post Postado Novembro 17, 2014 me manda o codigo de geoip_region_name(), parece que ela ta gerando algum tipo de lixo Ele está contido no source http://j.maxmind.com/app/geoip.js Compartilhar este post Link para o post Compartilhar em outros sites
ExtremsX 58 Denunciar post Postado Novembro 17, 2014 Não consigo acessar esse JS ai, da um erro 500 Compartilhar este post Link para o post Compartilhar em outros sites
makssie 0 Denunciar post Postado Novembro 17, 2014 Não consigo acessar esse JS ai, da um erro 500 Vou alterar o source para outro vamos ver... Um momento. Compartilhar este post Link para o post Compartilhar em outros sites
ExtremsX 58 Denunciar post Postado Novembro 17, 2014 Outra cosia que acabei de notar: $var = "<script>document.write(variaveljs)</script>"; O que isso ai faz? Por que você ta mandado ele tirar os acentos e depois verificar a região a partir disso ai? Compartilhar este post Link para o post Compartilhar em outros sites
makssie 0 Denunciar post Postado Novembro 17, 2014 Alterei para js.maxmind.com/js/geoip.js Só que não é autorizado Outra cosia que acabei de notar: $var = "<script>document.write(variaveljs)</script>"; O que isso ai faz? Por que você ta mandado ele tirar os acentos e depois verificar a região a partir disso ai? Passando a variável do javascript para PHP para depois trata-la com o PHP. Eu preciso tirar os acentos e deixar em minúscula. Realmente não deu certo e não sei como olhar o script do js já que está dando não autorizado. Compartilhar este post Link para o post Compartilhar em outros sites
ExtremsX 58 Denunciar post Postado Novembro 17, 2014 Nunca vi isso, de onde você tirou isso ai? Compartilhar este post Link para o post Compartilhar em outros sites