tiempo en descarga

1465 visitas 1 respuestas

quiero realizar un modulo de descargas donde el usuario ingrese y descarge un archivo y despues si quiere descargar de nuevo no pueda, tenga que esperar 10 minutos. teno pensado realizarlo de la sig forma: al ingresar a modulo.php verifica su ip y la hora del servidor, comparar si la ip existe en la base de datos, si no existe le permitimos descargar y almaceno su ip mas un tiempo limite "hora actual + 10 min", de lo contrario si existe la ip comparo el tiempo limite con la hora actual si aun no cumple los 10 min no descarga de lo contrario descarga y elimino su ip y de nuevo almaceno su ip y un tiempo limite.

realice el code de la sig manera

<?php require 'config.php' ;// llamamos al config //vemos la ip del cliente $ip = $_SERVER['REMOTE_ADDR'] ; // revisamos la hora actual $hora = date ( "g:i:s A");

$query = "SELECT * FROM tiempo WHERE ip='" . $ip . "'"; $result = mysql_db_query("$db", $query); if($r=mysql_fetch_array($result)) { echo " los datos que estan en la base de datos es " ; echo "ip: ".$r['ip'].""; echo "limite: ".$r['limite'].""; echo "hora: ".$r['hora'].""; if($r[limite] < $hora) {

 echo " ya paso el tiempo enconteses eliminamos  " ; 
             mysql_query(" delete from tiempo where ip='$ip'") ;  

} } else { echo " no existe la ip "; $servidor = date ( "g:i:s A"); $servidor = strtotime('+10 minutes'); $limite = date('g:i:s A', $servidor); mysql_query("INSERT INTO tiempo (ip,hora,limite) VALUES ('{$ip}','{$hora}','{$limite}')"); } ?>

ya casi lo tengo solo tengo un error cuando pasan los 10 minutos se elimina la ip, pero se tiene que actualizar la pag para que me diga que la ip no existe es decir que pueda descargar, como le hago para que al momento de que pasen los 10 minutos elimine la ip pueda mostrar el contenido y posteriormente de nuevo ingrese la ip y todos los datos sin necesidad de actualizar ? creo que hay un problema con los if

por desde Afganistán

Registrado desde: 05 Mar 08

Respuestas

0 0

Aunque no hay indentación parece que los if están bien: compruebas si la consulta devuelve registros, y si los devuelve compruebas si el límite ya ha pasado para borrar la IP.

Entonces lo que quieras hacer cuando haya pasado el límite mételo en ese if ($r['limite'] < $hora). Si quieres actualizar la página puedes hacerlo ahí mismo con header('Location: pagina.php').

Por cierto el caso en el que la IP no esté o ya haya pasado el límite podrías unirlos porque tienen acciones parecidas. Podrías ser algo tipo:

<?php

if (($r=mysql_fetch_array($result)) && $r['limite'] > $hora){

echo " los datos que estan en la base de datos es " ;
echo "ip: ".$r['ip']."<br>";
echo "limite: ".$r['limite']."<br>";
echo "hora: ".$r['hora']."<br>";

} else{

//Si existe el índice es que se ha pasado el límite
if (isset($r['limite'])){
    echo " ya paso el tiempo enconteses eliminamos " ;
    mysql_query(" delete from tiempo where ip='$ip'") ;
}
else
    echo " no existe la ip ";
//En cualquier caso registramos la IP y el nuevo límite
$servidor = date ( "g:i:s A");
$servidor = strtotime('+10 minutes');
$limite = date('g:i:s A', $servidor);
mysql_query("INSERT INTO tiempo (ip,hora,limite) VALUES ('{$ip}','{$hora}','{$limite}')");

} ?>

Si quieres en vez de eliminar la IP y volverla a meter puedes mover todo lo que está fuera del último if (quitando el INSERT) y ponerlo justo antes, haciendo un UPDATE dentro del IF y en el else el INSERT.

por desde España

Registrado desde: 14 Jan 09