Foros del Web » Programando para Internet » PHP »

Redireccionar segun IP, con PHP y Mysql

Estas en el tema de Redireccionar segun IP, con PHP y Mysql en el foro de PHP en Foros del Web. Hola! mirar estoy provando un código para redireccionar a los usuarios según su país. En el código debería redirrecionar a los de España a google.es ...
  #1 (permalink)  
Antiguo 02/12/2010, 07:05
 
Fecha de Ingreso: enero-2007
Mensajes: 156
Antigüedad: 17 años, 3 meses
Puntos: 3
Redireccionar segun IP, con PHP y Mysql

Hola!

mirar estoy provando un código para redireccionar a los usuarios según su país.
En el código debería redirrecionar a los de España a google.es y al resto de usuarios a google.com

Pero el problema es que conecta bien con la base de datos pero me sale el siguiente error: ipcountry Query Failed. Os adjunto una demo de la Base de datos también.

index.php
Código PHP:
<?php
// Replace this MYSQL server variables with actual configuration
$mysql_server "localhost";
$mysql_user_name "username";
$mysql_user_pass "1234";

// Retrieve visitor IP address from server variable REMOTE_ADDR
$ipaddress getenv(REMOTE_ADDR);

// Convert IP address to IP number for querying database
$ipno Dot2LongIP($ipaddress);

// Connect to the database server
$link mysql_connect($mysql_server$mysql_user_name$mysql_user_pass) or die("Could not connect to MySQL database");

// Connect to the database
mysql_select_db("database") or die("Could not select database");


// SQL query string to match the recordset that the IP number fall between the valid range
$query "SELECT * FROM ipcountry WHERE $ipno < = ipTO AND $ipno>=ipFROM";

// Execute SQL query
$result mysql_query($query) or die("ipcountry Query Failed");

// Retrieve the recordset (only one)
$row mysql_fetch_object($result);

// Keep the country information into two different variables
$countrySHORT $row->countrySHORT;
$countryLONG $row->countryLONG;

// Free recordset and close database connection
mysql_free_result($result); mysql_close($link);

// If the visitors are from ES, redirect them to ES site
if ($countrySHORT == "ES")
{
  
Header("Location: http://www.google.es");

else {
// Otherwise, redirect them to the site
  
Header("Location: http://www.google.com");
}
exit;

// Function to convert IP address (xxx.xxx.xxx.xxx) to IP number (0 to 256^4-1)
function Dot2LongIP ($IPaddr) {
 if (
$IPaddr == "")
 {
   return 
0;
 } else {
   
$ips split ("\.""$IPaddr");
   return (
$ips[3] + $ips[2] * 256 $ips[1] * 256 256 $ips[0] * 256 256 256);
 }
}
?>

DATABASE:
las columnas en orden se llaman: ipFROM, ipTO, countrySHORT, countryLONG

3400974336 | 3400982527 | ES | SPAIN
3400982528 | 3400990719 | HK | HONG KONG
3400990720 | 3400998911 | ID | INDONESIA
3400998912 | 3401003007 | PH | PHILIPPINES



Muchas gracias de antemano.

Última edición por manupalaya; 02/12/2010 a las 07:10
  #2 (permalink)  
Antiguo 02/12/2010, 07:53
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 9 meses
Puntos: 1532
Respuesta: Redireccionar segun IP, con PHP y Mysql

me parece problemas de sintaxis en el SQL, intenta:

Código PHP:
Ver original
  1. $query = "SELECT * FROM ipcountry WHERE '".$ipno"'. <= ipTO AND '".$ipno."' >= ipFROM;";

sobretodo como el interprete de mysql esté interpretando las IP, y el como estén almacenadas en la base de datos, por ello es mejor pasarlas como cadena
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #3 (permalink)  
Antiguo 02/12/2010, 09:16
 
Fecha de Ingreso: enero-2007
Mensajes: 156
Antigüedad: 17 años, 3 meses
Puntos: 3
Respuesta: Redireccionar segun IP, con PHP y Mysql

Exacto!, el problema era la query pero concretamente esta es la forma correcta:

Código PHP:
$query "SELECT * FROM ipcountry WHERE '$ipno' <= ipTO AND '$ipno' >= ipFROM;"

este es el modo correcto: '$ipno'


Muchas gracias, has acumulado buen karma!
  #4 (permalink)  
Antiguo 11/01/2011, 06:26
 
Fecha de Ingreso: noviembre-2009
Ubicación: Benidorm
Mensajes: 2
Antigüedad: 14 años, 5 meses
Puntos: 0
Respuesta: Redireccionar segun IP, con PHP y Mysql

Hola manupalaya!!

Me vendría de perlas usar tu código para redireccionar una tienda, peeeero ... ¿Como sabes qué rangos de ip son españoles y cuales de otros paises? Esque he estado mirando y solo consigo encontrar los rangos de los operadores y en principio se pueden ir de madre un poco.

¿Hay alguna regla opara las ips que asignan a cada pais?

Pd: Gracias de antemano, eh! Que la idea es muy buena!

Etiquetas: ip, mysql, redireccionar
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 12:03.