Foros del Web » Programando para Internet » PHP »

Buscar en base de datos

Estas en el tema de Buscar en base de datos en el foro de PHP en Foros del Web. Este es mi problema: Tengo una base de datos en la q almaceno las Ip de los usuarios q pasan por la pagina. para hacer ...
  #1 (permalink)  
Antiguo 07/09/2006, 12:53
Avatar de helyanne  
Fecha de Ingreso: marzo-2005
Ubicación: madrid
Mensajes: 119
Antigüedad: 19 años
Puntos: 0
Buscar en base de datos

Este es mi problema:

Tengo una base de datos en la q almaceno las Ip de los usuarios q pasan por la pagina. para hacer esto use este tutorial segun él los registros q lleven más de 120 segundos cuando alguien entra en la pagina son borrados de la bd

Tengo una encuesta en la que quiero restringir el voto cada cierto tiempo y para ello se me habia ocurrido hacer una consulta al enviar el voto en la q compruebe si en la tabla usuariosenlinea existe esa ip, y asi, si existe esa ip no le permite votar y si no existe, sí.

no se si sera muy complicado pero me encuentro atascada en la comprobación. creo q no se como hacer para hacer q busque en la columna ip si existe un valor igual a mi variable $ip

agradezco vuetra ayuda!!!!
__________________
___________________

...::: ¡¡ SuperEli.com !! :::...
  #2 (permalink)  
Antiguo 07/09/2006, 13:14
Avatar de radarcba  
Fecha de Ingreso: mayo-2005
Ubicación: ureleando
Mensajes: 505
Antigüedad: 18 años, 11 meses
Puntos: 3
Te deje un mensaje privado con una posible solucion a lo que buscas. ;)
__________________
Maldición va a ser un día hermoso... PR
Tetris, correo & TU IP
  #3 (permalink)  
Antiguo 07/09/2006, 14:14
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Cita:
Iniciado por radarcba Ver Mensaje
Te deje un mensaje privado con una posible solucion a lo que buscas. ;)
Por favor ... el Mensaje privado ya lo verá el usuario indicado .. No está permitido por nuestras políticas de uso ese tipo de mensajes. En cualquier caso o lo haces en privado totalmente o publicas tu solución aquí en el foro.

Te invito a leer las políticas del foro nuevamente:

http://www.forosdelweb.com/f74/politicas-foros-del-web-101485/

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #4 (permalink)  
Antiguo 07/09/2006, 14:43
Avatar de helyanne  
Fecha de Ingreso: marzo-2005
Ubicación: madrid
Mensajes: 119
Antigüedad: 19 años
Puntos: 0
Cita:
Iniciado por Cluster Ver Mensaje
Por favor ... el Mensaje privado ya lo verá el usuario indicado .. No está permitido por nuestras políticas de uso ese tipo de mensajes. En cualquier caso o lo haces en privado totalmente o publicas tu solución aquí en el foro.

Te invito a leer las políticas del foro nuevamente:

http://www.forosdelweb.com/showthread.php?t=101485

Un saludo,
muchas gracias aun asi radarcba
__________________
___________________

...::: ¡¡ SuperEli.com !! :::...
  #5 (permalink)  
Antiguo 07/09/2006, 15:10
Avatar de the_scorpion  
Fecha de Ingreso: mayo-2006
Ubicación: Cuba
Mensajes: 696
Antigüedad: 17 años, 11 meses
Puntos: 3
Hola

Porque no posteas el codigo para que le des más detalles a los conocedores del tema

ah otra cosa
y si la ip esta por detras de un proxy y hay mas de un usuario navegando en tu pagina.
__________________
Que hablen mal de uno es espantoso. Pero hay algo peor: que no hablen.
Quien hace, puede equivocarse. Quien nada hace, ya está equivocado".
  #6 (permalink)  
Antiguo 07/09/2006, 15:54
Avatar de helyanne  
Fecha de Ingreso: marzo-2005
Ubicación: madrid
Mensajes: 119
Antigüedad: 19 años
Puntos: 0
el codigo q tengo hecho hasta ahora esta mal fijo,

he hecho esto:

$leer="SELECT * FROM usuariosenlinea WHERE ip LIKE '$ip2'";

$comprobacion = mysql_query($leer)or die('Error de lectura en la base de datos '.$this->error().'');

if ($comprobacion = true) {
//Si ya hay uno con esa ip, no le dejaremos votar
echo "Ya has votado antes";
//...
}else{

//Enviamos el voto

echo "puedes votar";
include("class.online.php");
$enlinea = new Usuariosenlinea();
$enlinea->enlinea();
//...
};

todavia tengo q probar la opción de radarcba q me ha mandado algunos ejemplos, si alguno me funciona lo pondre por si a alguien más le interesa hacer algo asi

por cierto the_scorpion me puedes explicar mejor los del proxy porfavor?
__________________
___________________

...::: ¡¡ SuperEli.com !! :::...
  #7 (permalink)  
Antiguo 07/09/2006, 17:56
 
Fecha de Ingreso: agosto-2006
Mensajes: 25
Antigüedad: 17 años, 8 meses
Puntos: 0
Hola,

imagino que adviertes al usuario de que su ip quedará registrada en una base de datos. Eso dependiendo del pais que sea puede vulnerar la ley.

Saludos.
  #8 (permalink)  
Antiguo 11/09/2006, 15:19
Avatar de helyanne  
Fecha de Ingreso: marzo-2005
Ubicación: madrid
Mensajes: 119
Antigüedad: 19 años
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 !! :::...
  #9 (permalink)  
Antiguo 11/09/2006, 23:19
Avatar de helyanne  
Fecha de Ingreso: marzo-2005
Ubicación: madrid
Mensajes: 119
Antigüedad: 19 años
Puntos: 0
por favor ayuda

q he hecho mal en mi funcion?
porq siempre dice q puedo votar?
__________________
___________________

...::: ¡¡ SuperEli.com !! :::...
  #10 (permalink)  
Antiguo 12/09/2006, 13:13
Avatar de helyanne  
Fecha de Ingreso: marzo-2005
Ubicación: madrid
Mensajes: 119
Antigüedad: 19 años
Puntos: 0
algo me dice q el error esta en mi función , porq lo demas va bien, pero no se en q he fallado.

ayuda porfavor
__________________
___________________

...::: ¡¡ SuperEli.com !! :::...
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:07.