Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: Percontex en 9 Mayo 2012, 07:20 am



Título: Tiempo de espera entre consultas sql
Publicado por: Percontex en 9 Mayo 2012, 07:20 am
Veamos, tengo una página que estoy desarrollando que hace varias consultas a una base de datos tan solo con cargarla, funciona muy bien y todo pero tengo un temor al momento de subirla.

Alguien fácilmente podría comenzar un flood de gets y tirarme fácilmente el sitio, entonces lo que necesito es que haya un tiempo de espere antes de realizar las mismas consultas simultaneamente, por ejemplo:

Visito la página por primera vez y todo carga de inmediato.

Le doy f5 al siguiente segundo y deseo que me muestre una alerta o algo que diga que tiene que esperar unos segundos más.

Lo he intentado así:

Código:
<?php
function espera(){
sleep(5);
}
?>

Y luego insertar esta función más abajo:

Código:
register_shutdown_function('espera');

Pero de este modo lo único que logro es que la página quede 'cargando' 5 segundos, aunque sea la primera vez que se visita :(

Alguien me da una mano?


Título: Re: Tiempo de espera entre consultas sql
Publicado por: pwnz en 10 Mayo 2012, 21:32 pm
A lo mejor me he complicado un poco, de todas formas lo he hecho en 10 min quizá alguien te de una solución mejor xD.
Código
  1. <?php
  2.  
  3. if(isset($_SESSION['hora+5sg'])){
  4. // Segunda vez o posterior que entras a la pagina
  5. if(time()<$_SESSION['hora+5sg']){
  6. //No puedes pasar, aqui redireccionas con header por ejemplo
  7. echo "No puedes pasar";
  8. }else{
  9. echo "Puedes pasar";
  10. $_SESSION['hora+5sg'] = time()+5; // Pasaste, la siguiente vez sera dentro de 5 sg
  11. }
  12.  
  13. }else{
  14. // Primera vez que entras
  15. $_SESSION['hora+5sg'] = time()+5; // Tempo + 5 segundos
  16. }
  17.  
  18. ?>
  19.  
Como dije lo hice rápido seguro que se puede mejorar. Básicamente cuando accedes guardas en una variable de sesión la hora en la que pudiste acceder a la página y le suma 5 segundos (puedes cambiarlo por lo que quieras),
luego con el if vas comprobando cada vez que accedes si han pasado 5 segundos o no.


Título: Re: Tiempo de espera entre consultas sql
Publicado por: Percontex en 11 Mayo 2012, 07:35 am
A lo mejor me he complicado un poco, de todas formas lo he hecho en 10 min quizá alguien te de una solución mejor xD.
Código
  1. <?php
  2.  
  3. if(isset($_SESSION['hora+5sg'])){
  4. // Segunda vez o posterior que entras a la pagina
  5. if(time()<$_SESSION['hora+5sg']){
  6. //No puedes pasar, aqui redireccionas con header por ejemplo
  7. echo "No puedes pasar";
  8. }else{
  9. echo "Puedes pasar";
  10. $_SESSION['hora+5sg'] = time()+5; // Pasaste, la siguiente vez sera dentro de 5 sg
  11. }
  12.  
  13. }else{
  14. // Primera vez que entras
  15. $_SESSION['hora+5sg'] = time()+5; // Tempo + 5 segundos
  16. }
  17.  
  18. ?>
  19.  
Como dije lo hice rápido seguro que se puede mejorar. Básicamente cuando accedes guardas en una variable de sesión la hora en la que pudiste acceder a la página y le suma 5 segundos (puedes cambiarlo por lo que quieras),
luego con el if vas comprobando cada vez que accedes si han pasado 5 segundos o no.

Gracias! por el momento va perfecto el script  ::)

Como dijiste en en el no puedes pasar, lo estoy redireccionando con un header a un html vació para evitar problemas ;)