2011-02-28 10 views
7

Tengo un sitio web que permite una funcionalidad para cualquier usuario pero cada usuario solo puede usarlo una cantidad fija de veces.Restrinja el acceso a la funcionalidad para el usuario por la dirección IP

Permítanme entrar en más detalles, nuestro usuario "anónimo/invitado" puede buscar en la base de datos para las entradas solo 3 veces cada 24 horas. ¿Hay alguna manera de usar IP para rastrear los intentos de los usuarios en esto, restringirlos después de 3 intentos y luego hacer que caduque después de 24 horas?

El sitio web está construido en PHP, pero cualquiera que sea el idioma que tenga esta funcionalidad, estoy abierto a ello.

EDIT:

Esta idea proviene de un cliente, tienen una lista de "los almacenistas" el almacenamiento de sus productos y quieren poner esta información a disposición de los usuarios de la página web. Sin embargo, él no quiere que los competidores se aprovechen de su sistema y lo subestimen en sus proveedores. De ahí la restricción. Si puede sugerir una mejor manera de lograr lo mismo, entonces eso sería increíble

Cheers, Dan

+1

¿Usted ha considerado lo que sucede cuando varias personas detrás de la misma cortafuegos visitan su sitio en calidad de invitados, por ejemplo, varios estudiantes de la misma ¿colegio? Es probable que este enfoque evite que la mayoría de los estudiantes busquen en la base de datos, incluso una vez. – kojiro

+0

Explique por qué los invitados solo pueden buscar 3 veces cada 24 horas. Estoy seguro de que los miembros SO pueden darte soluciones mucho más agradables que restringir en función de la dirección IP. –

+0

He actualizado la pregunta :) –

Respuesta

8

Tienes que usar la variable global $ _SERVER, así:

if ($_SERVER['REMOTE_ADDR'] == '127.0.0.1') { 
    // restrict 
} 

Pero Debes considerar la nota de kojiro: no es una buena idea restringir por dirección IP.

Editar: ser constructivo.

Si quiere hacerlo en un nivel bajo, puede usar cookies. Estas variables se almacenan en el navegador del usuario, si el usuario borra las cookies localmente, él/ella puede anular su restricción.
http://www.php.net/manual/en/function.setcookie.php

La mejor solución es el uso de sesiones para este filtro:
http://php.net/manual/en/session.examples.basic.php

Cuestiones relacionadas