[SQL en PHP] Borrar entrada a las 24 horas

Iniciado por dimitrix, 8 Mayo 2009, 22:04 PM

0 Miembros y 1 Visitante están viendo este tema.

dimitrix

Intento hacer un programa que al usar X veces la web no te deje más, lo hice con cookies, pero no me llama la atención ya que se puede borrar, por eso, pensé guard la IP durante 24 horas y a las 24 que se borre.

Pues eso, si alguien me puede ayudar...




дٳŦ٭



Con sangre andaluza :)


Karman

la única forma es con sesiones en base de datos(guardando la IP).... pero si el usuario usa IP dinámica... y no exiges nombre de usuario y contraseña... no hay vuelta...

S2

luiggy2

Mi idea es que cada vez que se conecte un usuario a la web, se incremente el valor de la base de datos en 1. Cada vez que pida ver la base de datos, haces un select a esa celda de la BD, si es <= 10 (por ejemplo) que deje pasar, si no, que aparezca que no puede usarlo más.

Problemas:
- cada usuario tiene que estar registrado


Saludos!
Espero sus respuestas
" Las grandes ideas suelen salir la mayoría de veces de grandes estupideces "

#!drvy

Se podria hacer que cuando entre un visitante haga una consula a la base de datos con su ip y tome acciones desde ahi..obviamente esto no puede evitar que si el visitante cambia de ip no lo reconozca... ademas generaria muchas consultas hacia la bd....

Código (php) [Seleccionar]
<?php

$limit 
5;
$db_host "localhost";
$db_user "root";
$db_pass "toor";
$db_name "limite";
$ip $_SERVER['REMOTE_ADDR'];
$die_string "Tu Ip ( $ip ) ha superado el limite maximo ( $limit ) de visitas por hoy. Por favor vuelve mañana.";


$connection mysql_connect($db_host,$db_user,$db_pass) or die(mysql_error());
mysql_select_db($db_name,$connection) or die(mysql_error());


$result mysql_query("SELECT * FROM tabla_limite WHERE ip = '$ip'") or die(mysql_error());


if (
mysql_num_rows($result) > 0) {
    while (
$row mysql_fetch_array($result)) {

        
$ss_IP $row['ip'];
        
$ss_TI $row['time'];
        
$ss_TS $row['times'];
        
$ss_TSs $ss_TS 1;

        if (
$ss_TI time() -86400) {mysql_query("DELETE FROM tabla_limite WHERE ip='$ss_IP'");}
        elseif (
$ss_TS >= $limit) {die($die_string);}
        else {
mysql_query("UPDATE tabla_limite SET times = '$ss_TSs',time = '".time()."'  WHERE ip='$ss_IP'");}
    }
   
} else { 
    
mysql_query("INSERT INTO tabla_limite (ip,times,time) VALUES ('$ip','1','".time()."')");
}

mysql_close($connection);
?>


Esto lo que hace es comprobar si existe un registro con la ip del visitante...en caso de existir y ha superado el limite de visitas detiene todo y salta un mensaje de error...en caso de que no haya superado el limite... también chekea si han pasado 24 horas desde la ultima vez (86400 seg = 24h) y en caso de que si borra el registro.  En caso de que no se haya cumplido ninguna de las anteriores añade +1 a las veces que ha entrado y modifica el tiempo..
Y en caso de no existir tal registro lo crea...



Saludos

BenRu

Registro de usuarios con validación por email.
También miras la ip, mac, etc.


Así que la restricción se la haces a la cuenta directamente.


Es obvio que se puede pasar, pero es algo más seguro.


También podrías abrir el registro un par de horas al día...así que no se podrán registrar muchas veces xD...aunque tambien le niegas el acceso a otros...

‭lipman

Otra cosilla: en la BD guardas la hora a la que se conectaron (con el time() que es más exacto) y para que no entren hasta que pasen 24 horas haces algo asi como

si (ahora < horaDeSuUltimaConexion+(numero de segundos que tiene un dia))
entonces devuelve falso

dimitrix

El problema sería que no me gusta que guard IP's inecesariamente, quizás uno entre y no entre nunca más... era ese el problema^^




twoz

siguiendo lo que dice lipman puedes hacer que despues de por ejemplo 3 dias sin una conexión desde una ip, esta sea borrada de la base de datos.