Foros del Web » Programando para Internet » PHP »

Arreglo de mi script de referers :$

Estas en el tema de Arreglo de mi script de referers :$ en el foro de PHP en Foros del Web. Hola usuarios :D! Bueno, vengo para pedir una ayuda de parte de ustedes. Hace mucho tiempo hice un script que permite guardar los datos de ...
  #1 (permalink)  
Antiguo 09/11/2006, 00:59
 
Fecha de Ingreso: noviembre-2006
Mensajes: 20
Antigüedad: 17 años, 5 meses
Puntos: 0
Arreglo de mi script de referers :$

Hola usuarios :D!

Bueno, vengo para pedir una ayuda de parte de ustedes.

Hace mucho tiempo hice un script que permite guardar los datos de $HTTP_REFERER, osea para saber desde qué página vino aquella persona que visita. Lo que hice fue que estos datos fueran guardados en una db mysql, aparte de la URL de precedencia, también la fecha, la ip y el host de la ip.

el script es el siguiente:
Código PHP:
<?
    
 
//conectamos a la db                                    
    
$link=mysql_connect($dbhost,$dbusuario,$dbpassword);
    
mysql_select_db($db,$link);

 
//evitamos que nos haga referencia a nuestra página
        
if(isset($_SERVER['HTTP_REFERER']) && strstr($_SERVER['HTTP_REFERER'],$wwwurl) == FALSE){
        
        
$ipx=explode(".",$ip_real);
        
$host=obtener_host();
        
$host=explode(".",$host);
        
$n=count($host);
        
$n1=$n-1;
        
$n2=$n-2;
        
$n3=$n-3;
        
$var_rf=$_SERVER['HTTP_REFERER'];
        
$var_ip=$ipx[0].".".$ipx[1].".--.--";
        
$var_hos=$host[$n3].".".$host[$n2].".".$host[$n1];
        if(
is_numeric($host[0])){
            for(
$i=0$i<=9$i++){
        
$var_hos=str_replace($i,"?",$var_hos);
        }
        }else{
        }    
        
$var_hos=strtolower($var_hos);
        
$fecha time();
        
$sql="INSERT INTO referers SET id='', enlace='$var_rf', ip='$var_ip', host='$var_hos', fecha='$fecha'";
        
mysql_query($sql,$link);
        }
        
?>
Los que entienden el tema, entenderán que los datos que se guardan, sobretodo la ip, se guarda a la db de mysql de forma cortada. Me explico. Una persona anónima ingresa a la página y automáticamente se guarda la página de donde venía, su ip, su host y fecha. La ip por defecto se guardará con este estilo: 255.255.--.-- , para privarle la ip.

Lo que quiero arreglar es lo siguiente.
Quiero evitar que la IP se guarde de esta forma (255.255.--.--), quiero que se guarde completamente, pero una vez que yo quiera MOSTRAR a los usuarios de mi página esa IP, quiero cortarlo de manera que quede (255.255.--.--). Me entienden?. Osea que en la base de datos se vea la IP completa, pero cuando lo quiera mostrar en la página, que la IP se vea cortada (255.255.--.--).

Cómo lo arreglarían ustedes?
Espero que me puedan ayudar!

saludos!!
  #2 (permalink)  
Antiguo 09/11/2006, 01:38
 
Fecha de Ingreso: noviembre-2006
Mensajes: 20
Antigüedad: 17 años, 5 meses
Puntos: 0
Apenas pasaron 10 minutos que publiqué este tema y yo solito logré arreglar mi problema :)!

Para los nuevos usuarios que quieren aprender, les pasaré el código de como lo hice.

Así quedó ahora el código:
Código PHP:
<?
    
//guardaremos los referers que llegan desde otro lugar
 //conectamos a la db                                    
    
$link=mysql_connect($dbhost,$dbusuario,$dbpassword);
    
mysql_select_db($db,$link);

 
//evitaremos que nos haga referencia a nuestra url
    
if(isset($_SERVER['HTTP_REFERER']) && strstr($_SERVER['HTTP_REFERER'],$wwwurl) == FALSE){
        
 
//recibiremos datos de referencia, ip, host    
    
$var_rf=$_SERVER['HTTP_REFERER'];
    
$var_ip=$ip_real;
    
$var_hos=obtener_host();
        
 
//guardaremos la fecha/hora
    
$fecha=time();
        
 
//ingresaremos los datos obtenidos a la db
        
$sql="INSERT INTO referers SET id='', enlace='$var_rf', ip='$var_ip', host='$var_hos', fecha='$fecha'";
        
mysql_query($sql,$link);
        }

        
?>
Luego de recibir los datos. La IP quedaría originalmente 255.255.255.255 guardada en la db. El host también, pero sólo explicaré lo de la IP.

Al momento de IMPRIMIR los datos, este es el código:

Código PHP:
<?
    
//obtendremos los referers que provengan de otra página web
 //conectamos a la db
    
$link=mysql_connect($dbhost,$dbusuario,$dbpassword);
    
mysql_select_db($db,$link);
    
 
//sacamos los datos
    
$sql=mysql_query("SELECT * FROM referers order by id desc;");
        
    while(
$row mysql_fetch_array($sql)) {
    
$enlace $row[enlace];
    
$ip $row[ip];
     
$host $row[host];
    
            
$ipx=explode(".",$ip);
            
$host=explode(".",$host);
            
$n=count($host);
            
$n1=$n-1;
            
$n2=$n-2;
            
$n3=$n-3;
            
$ip=$ipx[0].".".$ipx[1].".--.--";
            
$host=$host[$n3].".".$host[$n2].".".$host[$n1];
            if(
is_numeric($host[0])){
                for(
$i=0$i<=9$i++){
            
$host=str_replace($i,"?",$host);
            }
            }else{
            }    
            
$host=strtolower($host);
        
//
        
$fecha $row[fecha]; 
        
$fecha date("d/m/y" "-" "H:i",$fecha);

    
    
//finalmente imprimimos los datos
        
echo "<table width=\"100%\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">
              <tr>
                <td width=\"21%\"><span class=\"txt_referers \">$fecha</span></td>
                <td width=\"18%\"><span class=\"txt_referers \">$ip</span></td>
                <td width=\"53%\"><span class=\"txt_referers \">*.$host</span></td>
                <td width=\"8%\"><div align=\"right\"><span class=\"txt_referers \"><a href=\"$enlace\" target=\"_blank\">www</a></span></div></td>
              </tr>
</table>"
;
    }
    
?>
Los que son usuarios intermedios, entenderán algo (creo).
Lo único que hice fue sacar los código de remplazo antes de guardar los datos a la db, ahora la diferencia es que esos códigos están después, osea que una vez que guardamos los datos a la db, ahí recién EDITAREMOS datos para cortarlos.

Saludos!
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 08:08.