Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

makssie

Erro no Script... Echo na Região;

Recommended Posts

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

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


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

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

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

 

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

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

 

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

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

 

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"

 

 

 

 

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

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

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

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

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.