Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: dimitrix en 8 Mayo 2009, 22:04 pm



Título: [SQL en PHP] Borrar entrada a las 24 horas
Publicado por: dimitrix en 8 Mayo 2009, 22:04 pm
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...


Título: Re: [SQL en PHP] Borrar entrada a las 24 horas
Publicado por: дٳŦ٭ en 9 Mayo 2009, 03:31 am
Un cron.


Título: Re: [SQL en PHP] Borrar entrada a las 24 horas
Publicado por: Karman en 9 Mayo 2009, 06:31 am
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


Título: Re: [SQL en PHP] Borrar entrada a las 24 horas
Publicado por: luiggy2 en 9 Mayo 2009, 15:46 pm
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


Título: Re: [SQL en PHP] Borrar entrada a las 24 horas
Publicado por: #!drvy en 10 Mayo 2009, 12:53 pm
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
  1. <?php
  2.  
  3. $limit = 5;
  4. $db_host = "localhost";
  5. $db_user = "root";
  6. $db_pass = "toor";
  7. $db_name = "limite";
  8. $ip = $_SERVER['REMOTE_ADDR'];
  9. $die_string = "Tu Ip ( $ip ) ha superado el limite maximo ( $limit ) de visitas por hoy. Por favor vuelve mañana.";
  10.  
  11.  
  12. $connection = mysql_connect($db_host,$db_user,$db_pass) or die(mysql_error());
  13. mysql_select_db($db_name,$connection) or die(mysql_error());
  14.  
  15.  
  16. $result = mysql_query("SELECT * FROM tabla_limite WHERE ip = '$ip'") or die(mysql_error());
  17.  
  18.  
  19. if (mysql_num_rows($result) > 0) {
  20.    while ($row = mysql_fetch_array($result)) {
  21.  
  22.        $ss_IP = $row['ip'];
  23.        $ss_TI = $row['time'];
  24.        $ss_TS = $row['times'];
  25.        $ss_TSs = $ss_TS + 1;
  26.  
  27.        if ($ss_TI < time() -86400) {mysql_query("DELETE FROM tabla_limite WHERE ip='$ss_IP'");}
  28.        elseif ($ss_TS >= $limit) {die($die_string);}
  29.        else {mysql_query("UPDATE tabla_limite SET times = '$ss_TSs',time = '".time()."'  WHERE ip='$ss_IP'");}
  30.    }
  31.  
  32. } else {
  33.    mysql_query("INSERT INTO tabla_limite (ip,times,time) VALUES ('$ip','1','".time()."')");
  34. }
  35.  
  36. mysql_close($connection);
  37. ?>

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


Título: Re: [SQL en PHP] Borrar entrada a las 24 horas
Publicado por: BenRu en 10 Mayo 2009, 17:53 pm
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...


Título: Re: [SQL en PHP] Borrar entrada a las 24 horas
Publicado por: ‭lipman en 10 Mayo 2009, 22:55 pm
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


Título: Re: [SQL en PHP] Borrar entrada a las 24 horas
Publicado por: dimitrix en 11 Mayo 2009, 02:29 am
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^^


Título: Re: [SQL en PHP] Borrar entrada a las 24 horas
Publicado por: twoz en 17 Mayo 2009, 20:58 pm
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.