Foros del Web » Programando para Internet » PHP »

Como guardar el IP en la base de datos?

Estas en el tema de Como guardar el IP en la base de datos? en el foro de PHP en Foros del Web. Saludos. Estoy levantando un sistema de comentarios, ya esta un poco mas robusto, pero lo que me gustaria saber ahora, es como a la hora ...
  #1 (permalink)  
Antiguo 11/03/2005, 01:52
Avatar de stanmx  
Fecha de Ingreso: noviembre-2002
Ubicación: Tijuana
Mensajes: 192
Antigüedad: 15 años, 1 mes
Puntos: 0
Como guardar el IP en la base de datos?

Saludos.

Estoy levantando un sistema de comentarios, ya esta un poco mas robusto, pero lo que me gustaria saber ahora, es como a la hora de que algun usuario introduzca un comentario, su ip real quede guardado en la base de datos.

Esto como medida de seguridad, por si se necesitara bloquearlo.

Agradeceria sus sugerencias.

Estoy usando PHP + Mysql
__________________
STANMX • Buscando la accesibilidad :arriba:
  #2 (permalink)  
Antiguo 11/03/2005, 02:24
 
Fecha de Ingreso: febrero-2005
Ubicación: bcn - catalunya
Mensajes: 107
Antigüedad: 12 años, 10 meses
Puntos: 0
No se si preguntas esto, pero bueno... la manera de conseguir la IP remota es $_SERVER['REMOTE_ADDR']
aunque si la persona que se conecta va a través de un proxy de timofonica entonces vas a tener esa ip... bueno... espero te sea útil.
:)
__________________
http://curiosobundo.com <-- blogging

curiosobundaje en este curioso mundo...
  #3 (permalink)  
Antiguo 11/03/2005, 02:26
Avatar de stanmx  
Fecha de Ingreso: noviembre-2002
Ubicación: Tijuana
Mensajes: 192
Antigüedad: 15 años, 1 mes
Puntos: 0
Y Existe alguna manera de jalar el ip real del usuario? y se guarde en la base de datos?

Y como la mandaria pedir sin que el usuario se diera cuenta?
__________________
STANMX • Buscando la accesibilidad :arriba:
  #4 (permalink)  
Antiguo 11/03/2005, 02:42
Avatar de stanmx  
Fecha de Ingreso: noviembre-2002
Ubicación: Tijuana
Mensajes: 192
Antigüedad: 15 años, 1 mes
Puntos: 0
Lo he conseguido, solo mande imprimir $ip=$REMOTE_ADDR; en la base de datos, y funciono, ahora lo que se me acaba de ocurrir, seria mandar todos los datos del que comento, con comentario y todo, a mi cuenta de correo.

Creo que ese sera tema de otro post.

Gracias por la ayuda.
__________________
STANMX • Buscando la accesibilidad :arriba:
  #5 (permalink)  
Antiguo 11/03/2005, 03:42
Avatar de txetxol  
Fecha de Ingreso: febrero-2002
Ubicación: Pamplona
Mensajes: 73
Antigüedad: 15 años, 9 meses
Puntos: 1
Esta función te devuelve la ip real.

Código PHP:
// Devuelve la ip real del usuario, sin proxys
function real_ip() // as string
{
    if (
$for getenv('HTTP_X_FORWARDED_FOR')){
        
$afor explode(","$for);
        return 
trim($afor[0]);
    }else
        return 
getenv('REMOTE_ADDR');

Tambien te dejo una pequeña clase que hice para obtener la ip y pasarla a hexadecimal para que ocupe menos en la db, a ver que os parece:
Código PHP:
// Esta clase contiene funciones para el manejo de las ips
//  - Codificación de ip
//      string codificar_ip(string)
//  - Decodicifación de ip
//      string decodificar_ip(string)
//  - Identificación del ip del usuario
class ip
{
    
// Devuelve una cadena de 8 caracteres con la ip codificada en hexadecimal
    
function codificar_ip($ip=''// as string
    
{
        
$aux=array();
        
$ipcod="";
        
        if(empty(
$ip))
            
$ip=$this->real_ip();
            
        
$aux=explode("."$ip);
        
        for(
$i=0;$i<sizeof($aux);$i++)
            
$ipcod.=str_pad(dechex($aux[$i]), 2"0"STR_PAD_LEFT);
            
        return 
$ipcod;
    }

    
// Restaura la ip a partir de la cadena hexadecimal $ipcod
    
function decodificar_ip($ipcod// as string
    
{
        
$ip="";
        for(
$i=0;$i<4;$i++)
            
$ip.=hexdec(substr($ipcod,$i*2,2)).".";
            
        
$ip=substr($ip,0,strlen($ip)-1);
        return 
$ip;
    }
    
    
// Devuelve la ip real del usuario, sin proxys
    
function real_ip() // as string
    
{
        if (
$for getenv('HTTP_X_FORWARDED_FOR')){
            
$afor explode(","$for);
            return 
trim($afor[0]);
        }else
            return 
getenv('REMOTE_ADDR');
    }

  #6 (permalink)  
Antiguo 11/03/2005, 03:43
 
Fecha de Ingreso: febrero-2005
Ubicación: bcn - catalunya
Mensajes: 107
Antigüedad: 12 años, 10 meses
Puntos: 0
de nada! hoy por ti mañana por mi!! :)
la pregunta seria como enviar un mail? o qué exactamente?
__________________
http://curiosobundo.com <-- blogging

curiosobundaje en este curioso mundo...
  #7 (permalink)  
Antiguo 11/03/2005, 03:50
Avatar de stanmx  
Fecha de Ingreso: noviembre-2002
Ubicación: Tijuana
Mensajes: 192
Antigüedad: 15 años, 1 mes
Puntos: 0
Wow... te luciste con ese codigo txetxol Aunque aun no soy muy experto en php, hare algunas pruebas con lo que planteas, y la clase esta muy interesante.

Esto lo hago por que la ver las estadisticas de mi sitio veo que un solo ip ha revisado 221 paginas al mismo tiempo, como si realizara un scan. ahora, el ip parece pertenecer a mi ciudad, asi que dudo mucho que se trate de un buscador que desee indexar mi informacion.

Una pregunta fuera del tema, y que me gustaria que ustedes como programadores php me aclarara, es si mis paginas php pueden ser hackeadas, o robar el codigo de las mismas, ya que el browser cuando uno le da source te muestra el codigo html pero nada de php.

Ahora sobre lo que menciona Steve, me interesa que la informacion, aparte de irse a almacenar a la base de datos, me llegue por correo como si se tratase de un formulario.

Un saludo y thanks por la informacion.
__________________
STANMX • Buscando la accesibilidad :arriba:
  #8 (permalink)  
Antiguo 11/03/2005, 09:21
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Cita:
Ahora sobre lo que menciona Steve, me interesa que la informacion, aparte de irse a almacenar a la base de datos, me llegue por correo como si se tratase de un formulario.
Pues usa la función mail() www.php.net/mail

los datos los tienes .. ahora sólo te toca componer tu e-mail donde el cuerpo del mensaje concatenaras tus datos para formar su presentación (o compones HTML y te quedará más "presentado" .. ) en fin .. como gustes.

Un saludo,
  #9 (permalink)  
Antiguo 11/03/2005, 10:45
 
Fecha de Ingreso: febrero-2005
Ubicación: bcn - catalunya
Mensajes: 107
Antigüedad: 12 años, 10 meses
Puntos: 0
Te pongo un pequeño ejemplo, ok?


$para = "quien sea <[email protected]>";

$subject = "Razón del mail";

//por si quieres enviar en formato HTML-->

$headers = "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
$headers .= "From: tu nombre <[email protected]>\r\n";
$headers .= "Cc: [email protected]\r\n";
$headers .= "BCc: [email protected]\r\n";
$message = '
<html>
<head>
</head>
<body>
<center><b>Hola, q tal?</b></center>
</body></html>
';
// y ahora, una vez las variables ya están llenas... lo envias :)

mail($para, $subject, $message, $headers);

bueno, espero que te sea útil!

hasta pronto!
__________________
http://curiosobundo.com <-- blogging

curiosobundaje en este curioso mundo...
  #10 (permalink)  
Antiguo 11/03/2005, 10:51
Avatar de stanmx  
Fecha de Ingreso: noviembre-2002
Ubicación: Tijuana
Mensajes: 192
Antigüedad: 15 años, 1 mes
Puntos: 0
Thanks por el codigo Steve, voy a ver que sale el dia de hoy al implementarlo.

Ya estuve revisando el link que proporcionaste Cluster .
__________________
STANMX • Buscando la accesibilidad :arriba:
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 18:21.