Foros del Web » Programando para Internet » PHP »

borrar registro

Estas en el tema de borrar registro en el foro de PHP en Foros del Web. wenas he aqui mi cuestion: tengo un codigo a traves del cual cuando alguien accede a mi encuesta se registra su ip en una base ...
  #1 (permalink)  
Antiguo 14/09/2006, 15:15
Avatar de helyanne  
Fecha de Ingreso: marzo-2005
Ubicación: madrid
Mensajes: 119
Antigüedad: 19 años, 7 meses
Puntos: 0
borrar registro

wenas

he aqui mi cuestion:

tengo un codigo a traves del cual cuando alguien accede a mi encuesta se registra su ip en una base de datos, y si vuelve a intentar votar y su ip esta registrada no puede votar hasta al cabo de 15 minutos, ya q dentro del codigo hay una funcion q borra los registros q lleve mas de ese tiempo

es mi alternativa al uso de cookies, algunos ya habran sabido d esta idea porq me he atascado alguna vez y he pedido ayuda en este foro

pues bien, ahora va todo bien menos por el hecho de q si un mismo usuario entra al cabo de un tiempo no puede borrar su propia ip, y por lo tanto sigue sin poder votar... a no ser q entre otra persona y de paso q vota lanza la consulta q borra las ips antiguas (salvo la suya propia claro)
espero haberme explicao...

no se como hacer para q cualquiera borre todas las ips antiguas, incluida la suya... ayuda porfavor!

os paso un link al codigo.

http://rafb.net/paste/results/g00E2t11.html

muchas gracias de antemano!
__________________
___________________

...::: ¡¡ SuperEli.com !! :::...
  #2 (permalink)  
Antiguo 14/09/2006, 15:27
 
Fecha de Ingreso: agosto-2006
Mensajes: 177
Antigüedad: 18 años, 3 meses
Puntos: 1
por lo que veo, estas intentado borrar el registro solo cuando estas autorizado a botar por lo tanto es obvio que si un usuario ya voto y no tiene acceso por quince minutos, no va a poder borrar su ip ya que no tiene acceso al script donde esta la consulta sql que borra.

lo que puedes hacer es ejecutar la consulta que borra cada vez que entres a la pagina de la encuesta asi, se van borrando automaticamente los registros que lleven mas de 15 minutos.
  #3 (permalink)  
Antiguo 14/09/2006, 15:30
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
mm Ese tipo de procesos yo lo lanzaría con ayuda de un "Cron Job" programado a 15 minutos o el tiempo que decidas que ejecute el código del "DELTE" de todas las IP's (registros) que su fecha de creación sea mayor a la actual + 15 minutos ...

PD: no sé si tengo problemas yo .. pero el link a tu código no funciona .. Podrías pegarlo aquí? (mejor).

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 14/09/2006, 15:58
Avatar de helyanne  
Fecha de Ingreso: marzo-2005
Ubicación: madrid
Mensajes: 119
Antigüedad: 19 años, 7 meses
Puntos: 0
Ahi va...

me podrias explicar un poco mas lo del cron job??

rumo, creo q voy a intentar eso, a ver si no es mucho lio, por q van varias encuestas en la misma pagina y cada una va a su base de datos...
muchas gracias

Código PHP:
<?php
 
 
   
include('inclusiones2.php');
 
  
//Segundos para borrar de la base de datos a los usuarios inactivos 900 =15 min
  
$segundos 40;
  
$ahora 0;
 
        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 
comprobar(){
$ip2 ipreal();
//echo "<br><br>ip2: ".$ip2."<br><br>";
 
   
$conexion=conectar();
    
$usuarios=mysql_query("SELECT ip FROM usuariosenlinea WHERE ip='$ip2' ");
if(
$user_ok=mysql_fetch_array($usuarios))
{
//echo 'No puedes votar';
mysql_free_result($usuarios); //liberamos la memoria del query a la db
 
return false;
}
else
{
//echo 'Si puedes votar';
  
return true;
    }
     
mysql_close($conexion);
      }
 
                  function 
recargar()
                  {
 
            
$tiempo_actual time();
            
$tiempo_final $tiempo_actual $segundos;
            
$ip ipreal();
 
 
     
$conexion=conectar();
 
       
mysql_query("DELETE FROM usuariosenlinea WHERE timestamp < $tiempo_final")
        or die(
'Error al intentar borrar en la base de datos 'mysql_error());
        
$result mysql_query("SELECT ip FROM usuariosenlinea WHERE ip='".$ip."'")
        or die(
'Error de lectura en la base de datos 'mysql_error());
 
   if(
mysql_num_rows($result) == 0){
        
mysql_query("INSERT INTO usuariosenlinea VALUES ('$tiempo_actual','$ip','$_SERVER[REQUEST_URI]')")
        or die(
'Error al Insertar en la base de datos 'mysql_error());
    }
    else
    {
        echo 
"hay alguien" ;
 
        
mysql_query("UPDATE usuariosenlinea SET timestamp='$tiempo_actual' where ip='".$ip."'")
        or die(
'Error al Insertar en la base de datos 'mysql_error());
    }
         
mysql_query("DELETE FROM usuariosenlinea WHERE timestamp < $tiempo_final")
        or die(
'Error al intentar borrar en la base de datos 1'mysql_error());
 
        
$result mysql_query("SELECT ip FROM usuariosenlinea")
        or die(
'Error de lectura en la base de datos 'mysql_error());
 
        
$ahora mysql_num_rows($result);
 
        
mysql_close($conexion);
}
 
 
  function 
comprobar2(){
   
//   echo " sip";
 
       
if (comprobar()== true){
       echo 
"<br>Puedes votar!<br>";
         
recargar();
$campo=$_POST['voto'] ;
//$va es el valor actual del campo votado
$va=recuperarValorActual($campo);
actualizarValor($campo,$va);
presentarResultados();
       }
       else
       {
       echo 
"<br>No puedes votar!<br>";
 
$campo=$_POST['voto'] ;
//$va es el valor actual del campo votado
$va=recuperarValorActual($campo)-1;
actualizarValor($campo,$va);
 
presentarResultados();
      }
      }
      
comprobar2();
 
?>
__________________
___________________

...::: ¡¡ SuperEli.com !! :::...
  #5 (permalink)  
Antiguo 14/09/2006, 19:42
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
Cita:
me podrias explicar un poco mas lo del cron job??
El "Cron Job" es una aplicación del S.O. que uses (Linux en este caso, Windows tiene la suya también .. le llaman: "Programador de tareas"). Si usas un servicio de hosting, la mayoría permiten crear un "cron job" desde sus paneles de control (cPanel .. etc).

No sé en que situación estás tu .. Pero se trata de que en esa "aplicación" configuras que a cierto intervalo de tiempo se llame a tu script PHP de proceso actual (el proceso que haría en ese momento si se llama o ejecuta en ese instante). El "Cron job" ya se encarga de ver cuando ejecuta tal aplicación que ahí se indique y que se haga sólo una vez en el intervalo definido sin esperas que un usario entre a ejecutar tu código ni que se ejecute constantemente aunque realmente no corresponda ejecutar en ese momento.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
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 21:29.