Foros del Web » Programando para Internet » PHP »

Error en script php para mostrar banner según país

Estas en el tema de Error en script php para mostrar banner según país en el foro de PHP en Foros del Web. Hola a todos, mis conocimientos de PHP son menos que elementales. Quiero mostrar un banner de acuerdo al país del visitante y buscando he encontrado ...
  #1 (permalink)  
Antiguo 10/08/2018, 17:41
Avatar de Yaguare  
Fecha de Ingreso: octubre-2006
Ubicación: Jerusalem humahuaqueña
Mensajes: 213
Antigüedad: 12 años
Puntos: 8
Error en script php para mostrar banner según país

Hola a todos, mis conocimientos de PHP son menos que elementales.
Quiero mostrar un banner de acuerdo al país del visitante y buscando he encontrado este código en este sitio. Al dueño del sitio en cuestión, el script le funciona perfectamente como puede verse en el video que ha publicado; el problema es que cuando lo publico de esta manera:
Código PHP:
<?php
 $var 
file_get_contents('http://ip-api.com/json/'.$_SERVER['REMOTE_ADDR']);
 
$location json_decode($var);
 if(
$location->;countryCode == 'MX'){
 echo 
'contenido para México';
 }else if(
$api->;countryCode == 'AR'){
 echo 
'contenido para Argentina';
 }else{
 echo 
'ooooopss... no perteneces a ningún país!:(';}
?>
el script no imprime nada.

Ahora bien si en cambio publico en el script la url's de mis banners

Código PHP:
<?php
 $var 
file_get_contents('http://ip-api.com/json/'.$_SERVER['REMOTE_ADDR']);
 
$location json_decode($var);
 if(
$location->countryCode == 'MX'){
 echo 
'<a title="mi sitio" href="https://www.misitio.com/indexmex.html"><img src="https://www.misitio/img/bannermex.jpg" alt="el alt" /></a>';}
else if(
$api->countryCode == 'AR'){echo '<a title="Mi sitio" href="https://www.misitio.com/indexar.html"><img src="https://www.misitio.com/img/bannerar.jpg" alt="el alt" /></a>';}
else{echo 
'ALGO';}
?>
El script tampoco imprime nada. ¿Qué puede estar sucediendo? Gracias de antemano a quién pueda hecharme una mano.
  #2 (permalink)  
Antiguo 10/08/2018, 19:51
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.387
Antigüedad: 3 años, 3 meses
Puntos: 253
Respuesta: Error en script php para mostrar banner según país

En el Primer bloque de codigo tienens unos cuantos punto y come atravezados en la lectura del json, revisa eso.

Segundo si estas haciendo pruebas en modo local no te va a funcionar, y si tienes error en el server, verifica cual es utilizando un try catch, pues si la ip no esta registrada en sus bases de datos algo a de estar regresando.

Por el contrario, probe el codigo y funciona bien.

Intenta de esta manera:

Código PHP:
Ver original
  1. try{
  2.     $var = file_get_contents('http://ip-api.com/json/'.$_SERVER['REMOTE_ADDR']);
  3. }catch(Excepcion $e){
  4.     echo $e->getMessage();
  5.     exit;
  6. }
  7. $data = json_decode($var);
  8. if($data->status =="fail"){
  9.     echo $data->message;
  10. }else{
  11.     $location = $data;
  12.     if($location->countryCode == 'VE'){
  13.         echo 'contenido para México';
  14.     }else if($api->countryCode == 'MX'){
  15.         echo 'contenido para Argentina';
  16.     }else{
  17.         echo 'ooooopss... no perteneces a ningún país!:(';
  18.     }
  19. }
__________________
[email protected]
HITCEL
  #3 (permalink)  
Antiguo 10/08/2018, 20:24
Avatar de Yaguare  
Fecha de Ingreso: octubre-2006
Ubicación: Jerusalem humahuaqueña
Mensajes: 213
Antigüedad: 12 años
Puntos: 8
Respuesta: Error en script php para mostrar banner según país

Muchas gracias xfxstudios por tu respuesta. No pruebo en local y tengo el módulo geoip instalado en el servidor.
He probado el código que me has devuelto y ahora si imprime, el problema es que estoy en Argentina y debería leerse: contenido para Argentina, pero se lee: ooooopss... no perteneces a ningún país!:(.
¿porqué sucedará esto? Saludos.
  #4 (permalink)  
Antiguo 10/08/2018, 22:02
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.387
Antigüedad: 3 años, 3 meses
Puntos: 253
Respuesta: Error en script php para mostrar banner según país

Por lo que te comente, los sewrvicios de geolocalizacion de IPs como geo ip o maxmint crean sus bases de datos las cuales van actualizando periodicamente, es probable que ti IP no se encuentre en la base de datos que estas consultado, lo digo porque me ha sucedido con el servicio de maxmint el cual en ocaciones indica que cierta IP no se encuentra registrada.

Por otro lado espero hayas cambiado los codigos de pais en el script, recuerda que los cambie para mi prueba.

Saludos
__________________
[email protected]
HITCEL
  #5 (permalink)  
Antiguo 14/08/2018, 16:49
Avatar de Yaguare  
Fecha de Ingreso: octubre-2006
Ubicación: Jerusalem humahuaqueña
Mensajes: 213
Antigüedad: 12 años
Puntos: 8
Respuesta: Error en script php para mostrar banner según país

Es raro pues si accedo a http://ip-api.com/json/ me dá mi ubicación exacta pero en el sitio web sigue imprimiendo: ooooopss... no perteneces a ningún país!:(
  #6 (permalink)  
Antiguo 14/08/2018, 23:11
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.387
Antigüedad: 3 años, 3 meses
Puntos: 253
Respuesta: Error en script php para mostrar banner según país

verificaste el country code de tu codigo?
__________________
[email protected]
HITCEL
  #7 (permalink)  
Antiguo 15/08/2018, 01:45
Avatar de Yaguare  
Fecha de Ingreso: octubre-2006
Ubicación: Jerusalem humahuaqueña
Mensajes: 213
Antigüedad: 12 años
Puntos: 8
Respuesta: Error en script php para mostrar banner según país

Si lo verifiqué. El problema es con Argentina, probé el código con la extensión Just Proxy VPN para EEUU y funciona perfectamente. Es muy raro, saludos.



La zona horaria es GMT -6. Ahora son las 00:23.