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: 214
Antigüedad: 17 años, 6 meses
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.448
Antigüedad: 8 años, 10 meses
Puntos: 263
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: 214
Antigüedad: 17 años, 6 meses
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.448
Antigüedad: 8 años, 10 meses
Puntos: 263
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: 214
Antigüedad: 17 años, 6 meses
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.448
Antigüedad: 8 años, 10 meses
Puntos: 263
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: 214
Antigüedad: 17 años, 6 meses
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.
  #8 (permalink)  
Antiguo 29/03/2020, 12:22
 
Fecha de Ingreso: abril-2006
Mensajes: 583
Antigüedad: 18 años
Puntos: 120
Respuesta: Error en script php para mostrar banner según país

solo por si acaso, verificaste que la funcion file_Get_contents, esta recuperando la informacion correcta??

Código PHP:
Ver original
  1. <?php
  2.  $var = file_get_contents('http://ip-api.com/json/'.$_SERVER['REMOTE_ADDR']);
  3.  $location = json_decode($var);
  4.  if($location->;countryCode == 'MX'){
  5.  echo 'contenido para México';
  6.  }else if($api->;countryCode == 'AR'){
  7.  echo 'contenido para Argentina';
  8.  }else{
  9.  echo 'ooooopss... no perteneces a ningún país!:(';}
  10. ?>

siempre cuando hay un error y no estas seguro de que lo causa tienes que descartarlos, iniciando de arriba hacia abajo

en todo caso, recordarte, que file_get_contents, por restriccion en el PHP.INI no te retornara el contenido de la URL, ya que esa funcion esta hecha para trabajar con archivos locales, pero para externos, se tiene que tocar la configuracion del .INI

asi que primero verifica

Código PHP:
Ver original
  1. <?php
  2.  $var = file_get_contents('http://ip-api.com/json/'.$_SERVER['REMOTE_ADDR']);
  3.  var_dump($_SERVER['REMOTE_ADDR']);
  4.  var_dump($var);
  5. ?>

$_SERVER['REMOTE_ADDR']. te devolvera la IP remota del que se esta conectado, siempre y cuando el SCRIPT este subido en un servidor externo, de lo contrario devolvera el IP de la INTRANET
__________________
Mis aportes te ayudaron??, te hicieron ahorrar valiosos tiempo??, si quieres puedes agradecerme con un Gracias o con una donacion
https://paypal.com/pools/c/8lmNLmWnG9

Etiquetas: geo, ip, pais, redireccionamiento, según
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:25.