Ver Mensaje Individual
  #8 (permalink)  
Antiguo 11/09/2006, 15:19
Avatar de helyanne
helyanne
 
Fecha de Ingreso: marzo-2005
Ubicación: madrid
Mensajes: 119
Antigüedad: 19 años, 1 mes
Puntos: 0
Creo q he dado con la solución pero no termina de funcionar y no se porq...

He tratado de hacer una funcion con la q antes de insertar un nuevo ip, compruebe antes si este existe ya en la bd, y si es asi , no lo actualiza y devuelve una variable. pero sencillamente no me hace caso...

Os paso el codigo porq necesito vuestra ayuda urgente, y os la agradezco muchisimo desde ya.

(he omitido en le codigo los detalles de la conexion, como imaginareis)

<?php
$IP2 = $REMOTE_ADDR;
class Usuariosenlinea
{
var $e_rror;
//Segundos para borrar de la base de datos a los usuarios inactivos 900 =15 min
var $segundos = 900;
var $ahora = 0;

//CONSTRUCTOR
function Usuariosenlinea() {

$this->recargar();

}

function cuantos() {

return $this->ahora;

}

function enlinea() {

if($this->ahora == 1) {

echo $this->ahora ." Usuario en linea";
}
else
{
echo $this->ahora ." Usuarios en linea";
}

}

function ipreal(){

if ($real_ip = getenv('HTTP_X_FORWARDED_FOR')){

$explode_real_ip = explode(",", $real_ip);
return trim($explode_real_ip[0]);
}
else
{
return getenv('REMOTE_ADDR');
}
}

function error(){

return $this->e_rror = mysql_error();

}

// esta es la funcion q me he inventado para comprobar si existe la ip, pero no va

function comprobar(){
$sql = "SELECT ip FROM usuariosenlinea WHERE ip='".$IP2."'";
$result = mysql_query($sql);
if($row = mysql_fetch_array($result))
{
echo "<br>Error, ya votastes!<br>";
$sumavoto = -1;
}
else
{
echo "<br>Puedes votar!<br>";
$sumavoto = -1;
}
}



function recargar()
{

$tiempo_actual = time();
$tiempo_final = $tiempo_actual - $this->segundos;
$ip = $this->ipreal();

@mysql_connect($this->servidor, $this->usuario, $this->pass)
or die('Error al Intentar Conectar con la base de datos '.$this->error().'');

@mysql_select_db($this->basededatos)
or die('Error Seleccionando la base de datos '.$this->error().'');

$result = mysql_query("SELECT ip FROM $this->nombredb WHERE ip='$ip'")
or die('Error de lectura en la base de datos '.$this->error().'');

if(mysql_num_rows($result) == 0){

mysql_query("INSERT INTO $this->nombredb VALUES ('$tiempo_actual','$ip','$_SERVER[REQUEST_URI]')")
or die('Error al Insertar en la base de datos '.$this->error().'');

}
else

{

// aqui es donde llamo a mi función

$this->comprobar();
mysql_query("UPDATE $this->nombredb SET timestamp='$tiempo_actual' where ip='$ip'")
or die('Error al Insertar en la base de datos '.$this->error().'');
}

mysql_query("DELETE FROM $this->nombredb WHERE timestamp < $tiempo_final")
or die('Error al intentar borrar en la base de datos '.$this->error().'');

$result = mysql_query("SELECT ip FROM $this->nombredb")
or die('Error de lectura en la base de datos '.$this->error().'');

$this->ahora = mysql_num_rows($result);

mysql_close();

}

}

?>

Espero vuestra ayuda

Por cierto xmistol, gracias por el aviso, no sabia q fuera obligatorio advertir, y menos cuando el registro de ips es temporal y se borra alos 15 minutos. menos mal q me has avisado!
__________________
___________________

...::: ¡¡ SuperEli.com !! :::...