Foros del Web » Programando para Internet » PHP »

Control para Formulario

Estas en el tema de Control para Formulario en el foro de PHP en Foros del Web. Tengo un formulario procesado con php (POST) que inserta datos en una tabla mysql. Sucede que me he topado con un usuario malintencionado que envia ...
  #1 (permalink)  
Antiguo 23/12/2010, 12:30
 
Fecha de Ingreso: junio-2007
Mensajes: 30
Antigüedad: 17 años, 4 meses
Puntos: 0
Control para Formulario

Tengo un formulario procesado con php (POST) que inserta datos en una tabla mysql. Sucede que me he topado con un usuario malintencionado que envia el formulario muchas veces en un segundo, creo que lo hace llamando directamente al script de procesamiento mediante cURL y me llena la base de datos de spam.

No se como hacer para CONTROLAR los envios y no permitir tantos en un segundo, y bloquear la ip del usuario que intenta hacerlo.

Necesito ayuda.

Gracias anticipadas.
  #2 (permalink)  
Antiguo 23/12/2010, 12:35
wjr
 
Fecha de Ingreso: diciembre-2010
Mensajes: 32
Antigüedad: 13 años, 10 meses
Puntos: 0
Respuesta: Control para Formulario

Te recomiendo guardar la IP del visitante cuando postea, además controla el tiempo en que la misma IP posteo por última vez (diferencias de fecha de posteo con now).
  #3 (permalink)  
Antiguo 23/12/2010, 12:43
 
Fecha de Ingreso: junio-2007
Mensajes: 30
Antigüedad: 17 años, 4 meses
Puntos: 0
Respuesta: Control para Formulario

Sí, recién agregué un campo adicional y estoy guardando las ip, pero ahora cómo controlo el tiempo? puedes ayudarme?
  #4 (permalink)  
Antiguo 23/12/2010, 13:40
wjr
 
Fecha de Ingreso: diciembre-2010
Mensajes: 32
Antigüedad: 13 años, 10 meses
Puntos: 0
Respuesta: Control para Formulario

Cita:
Iniciado por Stoneplus Ver Mensaje
Sí, recién agregué un campo adicional y estoy guardando las ip, pero ahora cómo controlo el tiempo? puedes ayudarme?

Guarda siempre la fecha en que se guardo el registro, un campo fecha tipo timestamp (def CURRENT_TIMESTAMP).

Luego antes de enviar el post, buscas el último registro por la IP. Si coincide alguno,
tomas el campo fecha y haces esto:


Código PHP:
$timpo_minimo_entre_posts 3//3 minutos supongamos

$now time();

$last strtotime($fecha); //$fecha es la fecha que traes de tu db

$minutos = ($last-$now)/60;

if(
$minutos $timpo_minimo_entre_posts) {
 
//no puede postear
} else {
  
//puede postear

  #5 (permalink)  
Antiguo 25/12/2010, 19:58
 
Fecha de Ingreso: junio-2007
Mensajes: 30
Antigüedad: 17 años, 4 meses
Puntos: 0
Respuesta: Control para Formulario

Ya lo tenía controlado, pero ahora resulta que los inserts se hacen desde ips distintas y pues no funciona el control mediante ip.

este script uso para obtener la ip

Código PHP:
function real_ip(){
    if(isset(
$_SERVER['HTTP_X_FORWARDED_FOR'])){
        
$_SERVER['REMOTE_ADDR']=$_SERVER['HTTP_X_FORWARDED_FOR'];
    }elseif(isset(
$_SERVER['HTTP_X_REAL_IP'])){
        
$_SERVER['REMOTE_ADDR']=$_SERVER['HTTP_X_REAL_IP'];
    }
return 
$_SERVER['REMOTE_ADDR'];

ya no se que hacer ...
  #6 (permalink)  
Antiguo 25/12/2010, 20:03
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 10 meses
Puntos: 845
Respuesta: Control para Formulario

Porque no utilizas algún captcha ? , deberías pasar por captcha.net .

Saludos.
  #7 (permalink)  
Antiguo 26/12/2010, 11:58
 
Fecha de Ingreso: junio-2007
Mensajes: 30
Antigüedad: 17 años, 4 meses
Puntos: 0
Respuesta: Control para Formulario

El capcha sería algo muy molesto para mis usuarios. Creo que estoy ante un ataque DDOS los inserts se incrementaron a miles por minuto, cómo puedo detener eso?

Etiquetas: control, formulario
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:00.