Foros del Web » Programando para Internet » PHP »

Enviar IP a Base de Datos con PHP

Estas en el tema de Enviar IP a Base de Datos con PHP en el foro de PHP en Foros del Web. Primero que nada, buenos días a todos! Tengo que decirles que leo muchísimo este foro hasta que hoy he decidido registrarme para ayudar y ser ...
  #1 (permalink)  
Antiguo 20/06/2011, 05:13
 
Fecha de Ingreso: junio-2011
Mensajes: 11
Antigüedad: 13 años, 6 meses
Puntos: 0
Pregunta Enviar IP a Base de Datos con PHP

Primero que nada, buenos días a todos!

Tengo que decirles que leo muchísimo este foro hasta que hoy he decidido registrarme para ayudar y ser ayudado.

Mi problema es el siguiente, tengo un formulario que estoy haciendo (por hobby) y quiero enviar los datos a una base de datos (hasta aquí todo bien).

El problema surge cuando intento enviar la IP para que solamente se pueda registrar una persona por IP.

El código que he escrito es el siguiente:

Código PHP:
<?php
//1. Crear conexión a la Base de Datos
$conexion mysql_connect("sql103.zobyhost.com","user","pass");
@
mysql_query("SET NAMES 'utf8'");
if (!
$conexion) {
die(
"Fallo la conexión a la Base de Datos: " mysql_error());
};
//2. Seleccionar la Base de Datos a utilizar
$seleccionar_bd mysql_select_db("zoby_7887666_prueba"$conexion);
if (!
$seleccionar_bd) {
die(
"Fallo la selección de la Base de Datos: " mysql_error());
};
//3. Tomar los campos provenientes del Formulario
[B]$ip $_SERVER['REMOTE_ADDR'];[/B]
$nombre $_POST['nombre'];
$apellido $_POST['apellido'];
$nacimiento $_POST['nacimiento'];
$direccion $_POST['direccion'];
$email $_POST['email'];
$telefono $_POST['telefono'];
$movil $_POST['movil'];
$otro $_POST['otro'];
//4. Insertar campos en la Base de Datos
$insertar mysql_query("INSERT INTO agenda ([B]ip[/B], nombre, apellido, nacimiento, direccion, email, telefono, movil, otro)
VALUES
([B]'$_POST[ip]'[/B],'$_POST[nombre]','$_POST[apellido]','$_POST[nacimiento]','$_POST[direccion]','$_POST[email]','$_POST[telefono]','$_POST[movil]','$_POST[otro]')"
$conexion);
if (!
$insertar) {
die(
"<center><h1><font color=red> Solo se admite un registro por IP en mi base de datos.</font></h1></center>");
//die("Fallo en la insercion de registro en la Base de Datos: " . mysql_error());
};
//4. Cerrar conexión a la Base de Datos
mysql_close($conexion);
>?
Marco en negrita lo que me está dando problemas.

Mil gracias a todos!!

Saludos,

Agustín
  #2 (permalink)  
Antiguo 20/06/2011, 05:29
 
Fecha de Ingreso: diciembre-2008
Ubicación: Vigo, Spain
Mensajes: 141
Antigüedad: 16 años
Puntos: 12
Respuesta: Enviar IP a Base de Datos con PHP

$_POST[ip] creo que no existe en tu caso, más bien sería $ip.
__________________
Personaliza tu blog, crea, comparte y exporta tus tarjetas de visita
  #3 (permalink)  
Antiguo 20/06/2011, 06:05
 
Fecha de Ingreso: junio-2011
Mensajes: 11
Antigüedad: 13 años, 6 meses
Puntos: 0
Respuesta: Enviar IP a Base de Datos con PHP

Si, lo he puesto en la zona:


//4. Insertar campos en la Base de Datos
$insertar = mysql_query("INSERT INTO agenda (ip, nombre, apellido, nacimiento, direccion, email, telefono, movil, otro)
VALUES
('$_POST[ip]','$_POST[nombre]','$_POST[apellido]','$_POST[nacimiento]','$_POST[direccion]','$_POST[email]','$_POST[telefono]','$_POST[movil]','$_POST[otro]')", $conexion);

pero aún así no me sale! :s

Gracias por tu respuesta!
  #4 (permalink)  
Antiguo 20/06/2011, 06:31
 
Fecha de Ingreso: julio-2010
Mensajes: 29
Antigüedad: 14 años, 5 meses
Puntos: 2
Respuesta: Enviar IP a Base de Datos con PHP

Bueno, no tiene sentido que primero asignes variables y luego no las utilices para insertar los datos en la base de datos. La inserción en la BD debería ser así:

Código PHP:
$insertar mysql_query("INSERT INTO agenda (ip, nombre, apellido, nacimiento, direccion, email, telefono, movil, otro)
VALUES ('$ip','$nombre','$apellido','$nacimiento','$direccion','$email','$telefono','$movil','$otro')"
$conexion); 
  #5 (permalink)  
Antiguo 20/06/2011, 06:38
 
Fecha de Ingreso: diciembre-2008
Ubicación: Vigo, Spain
Mensajes: 141
Antigüedad: 16 años
Puntos: 12
Respuesta: Enviar IP a Base de Datos con PHP

Cita:
Iniciado por agustinscaz Ver Mensaje
Si, lo he puesto en la zona:


//4. Insertar campos en la Base de Datos
$insertar = mysql_query("INSERT INTO agenda (ip, nombre, apellido, nacimiento, direccion, email, telefono, movil, otro)
VALUES
('$_POST[ip]','$_POST[nombre]','$_POST[apellido]','$_POST[nacimiento]','$_POST[direccion]','$_POST[email]','$_POST[telefono]','$_POST[movil]','$_POST[otro]')", $conexion);

pero aún así no me sale! :s

Gracias por tu respuesta!
Me refiero a que a menos que con el formulario tengas un campo identificado con id y lo envies como POST ese valor no existe.

Lo recibes perfectamente desde $_SERVER y le asignas el valor a $ip, ésta última es la que tienes que usar en el insert.

Te recomiendo cuando tengas problemas realizando consultas en la base de datos y tengas problemas, lo primero que hagas es hacer un echo de todo el insert y así compruebas los valores que les estás pasando.

Código PHP:
Ver original
  1. echo "INSERT INTO agenda (ip, nombre, apellido, nacimiento, direccion, email, telefono, movil, otro)
  2. VALUES
  3. ('$_POST[ip]','$_POST[nombre]','$_POST[apellido]','$_POST[nacimiento]','$_POST[direccion]','$_POST[email]','$_POST[telefono]','$_POST[movil]','$_POST[otro]')";

Y revisa la documentacion de POST y GET, porque declares una variable llamada $ip no significa que en el array de $_POST[] exista el valor dentro :/

Saludos
__________________
Personaliza tu blog, crea, comparte y exporta tus tarjetas de visita
  #6 (permalink)  
Antiguo 20/06/2011, 06:51
Avatar de solhdeck  
Fecha de Ingreso: junio-2011
Mensajes: 87
Antigüedad: 13 años, 6 meses
Puntos: 32
Respuesta: Enviar IP a Base de Datos con PHP

mariannairam tiene razón.

Si te fijas, en el insert pones $_POST[ip] pero la ip la recibes de $_SERVER[remote_addr]

Por otro lado, la variable $ip tiene el valor de la ip que quieres insertar en la base de datos, así que, como dice mariannairam, deberías utilizar la variable correcta:

Código PHP:
$insertar mysql_query("INSERT INTO agenda (ip, nombre, apellido, nacimiento, direccion, email, telefono, movil, otro)
VALUES ('$ip','$nombre','$apellido','$nacimiento','$direccion','$email','$telefono','$movil','$otro')"
$conexion); 
(hice copy-paste en el código)
  #7 (permalink)  
Antiguo 20/06/2011, 07:35
 
Fecha de Ingreso: junio-2011
Mensajes: 11
Antigüedad: 13 años, 6 meses
Puntos: 0
Respuesta: Enviar IP a Base de Datos con PHP

Es decir que tengo que poner un campo oculto en el formulario para que levante la IP y luego enviarla a la base de datos?

Gracias por la respuesta!
  #8 (permalink)  
Antiguo 20/06/2011, 08:15
Avatar de solhdeck  
Fecha de Ingreso: junio-2011
Mensajes: 87
Antigüedad: 13 años, 6 meses
Puntos: 32
Respuesta: Enviar IP a Base de Datos con PHP

en realidad, si miras mi respuesta te estoy diciendo que NO, no es necesario.

Sustituye las líneas de tu código después de "$insertar = mysq_query..."
por las líneas que te puse yo (o lo que puso miriannairim), y debería funcionar o.o
  #9 (permalink)  
Antiguo 20/06/2011, 08:34
 
Fecha de Ingreso: junio-2011
Mensajes: 11
Antigüedad: 13 años, 6 meses
Puntos: 0
Respuesta: Enviar IP a Base de Datos con PHP

Diosssssssss!! perdonaaaa que despistado que soy, no había leído bien lo que me habías puesto! :(

He solucionado el problema! era lo que me decían y no sabía leer :P

Dejo el código hecho por si a alguien le sirve en un futuro:

Código PHP:
<?php
//1. Crear conexión a la Base de Datos
$conexion mysql_connect("host","usuario","password");
@
mysql_query("SET NAMES 'utf8'");
if (!
$conexion) {
die(
"Fallo la conexión a la Base de Datos: " mysql_error());
};
//2. Seleccionar la Base de Datos a utilizar
$seleccionar_bd mysql_select_db("nombre_base_de_datos"$conexion);
if (!
$seleccionar_bd) {
die(
"Fallo la selección de la Base de Datos: " mysql_error());
};
//3. Tomar los campos provenientes del Formulario
$ip $_SERVER['REMOTE_ADDR'];
$nombre $_POST['nombre'];
$apellido $_POST['apellido'];
$nacimiento $_POST['nacimiento'];
$direccion $_POST['direccion'];
$email $_POST['email'];
$telefono $_POST['telefono'];
$movil $_POST['movil'];
$otro $_POST['otro'];
//4. Insertar campos en la Base de Datos
$insertar mysql_query("INSERT INTO agenda (ip, nombre, apellido, nacimiento, direccion, email, telefono, movil, otro)
VALUES ('$ip','$nombre','$apellido','$nacimiento','$direccion','$email','$telefono','$movil','$otro')"
$conexion);  
if (!
$insertar) {
die(
"<center><h1><font color=red> Solo se admite un registro por IP en mi base de datos.</font></h1></center>");
//die("Fallo en la insercion de registro en la Base de Datos: " . mysql_error());
};
//4. Cerrar conexión a la Base de Datos
mysql_close($conexion);
?>
Gracias a todos por sus respuestas!

Saludos!

Etiquetas: datosdb, direccion, ip, mysql
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 00:52.