Foros del Web » Programando para Internet » PHP »

Pagina de Confirmacion & Seguridad Antispam en formulario

Estas en el tema de Pagina de Confirmacion & Seguridad Antispam en formulario en el foro de PHP en Foros del Web. HOla nuevamente... me han surgido dos dudas con un simple formulario en PHP que tengo para recoger datos: Cita: <form action="formenvio.php" method=post> <p>&nbsp;</p> <table width="100" ...
  #1 (permalink)  
Antiguo 07/08/2005, 03:01
 
Fecha de Ingreso: julio-2005
Ubicación: Boyoliso
Mensajes: 661
Antigüedad: 12 años, 4 meses
Puntos: 0
Pregunta Pagina de Confirmacion & Seguridad Antispam en formulario

HOla nuevamente... me han surgido dos dudas con un simple formulario en PHP que tengo para recoger datos:

Cita:
<form action="formenvio.php" method=post>
<p>&nbsp;</p>
<table width="100" border="0" align="center">
<tr>
<th height="68" colspan="2" class="textoplano" scope="col"><img src="porque1.gif" width="400" height="42"></th>
</tr>
<tr>
<th class="textoplano" scope="col"><div align="left"><strong>Nombre:</strong></div></th>
<th scope="col"><div align="right">
<input type=text name="nombre" size=48>
</div></th>
</tr>
<tr>
<td width="108"><p align="left" class="fuente">Ubicacion:
</p> </td>
<td width="288">
<div align="right">
<input name=ubicacion type=text size=48>
</div></td>
</tr>
<tr>
<td colspan="2"><div align="center">
<p align="left" class="textoplano"><strong>Tu respuesta:</strong><br>
<textarea name=coment cols=63 rows=6 class="textoplano">
</textarea>
</p>
</div></td>
</tr>
<tr>
<td colspan="2"><div align="right">
<input name="submit" type=submit value="Enviar">
</div></td>
</tr>
</table>
</form>
<?
}else{
//Estoy recibiendo el formulario, compongo el cuerpo
$cuerpo = "Formulario enviado\n";
$cuerpo .= "Nombre: " . $HTTP_POST_VARS["nombre"] . "\n";
$cuerpo .= "ubicacion: " . $HTTP_POST_VARS["ubicacion"] . "\n";
$cuerpo .= "Comentarios: " . $HTTP_POST_VARS["coment"] . "\n";

//mando el correo...
mail("[email protected]","Formulario recibido",$cuerpo);

//doy las gracias por el envío
echo "<b>Gracias por colaborar. Puedes volver y seguir leyendo las respuestas de otras personas</b>";
}
?>
Alguien que sepa bastante de PHP me podria por favor decirme como hago para, o mejor dicho que codigo le debo añadir a este para:

1. Una persona no pueda undir ENVIAR mas de una vez en menos de cierto tiempo, una hora por ejemplo. para evitar a los desocupados que quieran hacer spam. Mejor dicho que scanee la ip que dio SEND y si esa misma IP en menos de una hora vueva a undir SEND le muestre un mensaje cualkier que tiene ke esperar un dia o algo asi y no haga el envio.

2. Para que cuando la persona de SEND se vaya a una pagina gracias.php, por ejemplo.


Solo es eso, si alguien sabe, gracias por ayudarme... ya busque en las 9 pagina ke hay del FAQ de PHP pero no hay similar a esto ke me pueda ayudar..

  #2 (permalink)  
Antiguo 07/08/2005, 04:18
 
Fecha de Ingreso: diciembre-2003
Mensajes: 218
Antigüedad: 14 años
Puntos: 0
Bueno, yo no se bastante de php, pero creo q te puedo ayudar.

1. Tendras q, o almacenar las ip's en una Base de Datos o en un fichero de texto (te recomiendo la BD) y en la pagina previa a esta o modificando esta, hacer la consulta correspondiente para comprobar si la ip ya esta registrada.

2.
Código PHP:
 <form action="gracias.php" method=post
Un saludo.
__________________
SymbianForever
SymbianForever.com, todo sobre y para tu symbian
aNieto2K | Themes para WordPress
De todo un poco
  #3 (permalink)  
Antiguo 07/08/2005, 05:24
 
Fecha de Ingreso: julio-2005
Ubicación: Boyoliso
Mensajes: 661
Antigüedad: 12 años, 4 meses
Puntos: 0
grax por la intencion.. pero si.. en palabras y razonamiento se lo ke tendria ke hacer la funcion.. pero ya ponerla en codigo es lo ke no se como..no soy programador...
  #4 (permalink)  
Antiguo 07/08/2005, 06:04
Avatar de DvD AdN  
Fecha de Ingreso: mayo-2005
Ubicación: Frente al monitor
Mensajes: 610
Antigüedad: 12 años, 7 meses
Puntos: 0
Ahi va como hacerle para permitir el envio de mensajes despues de determinado tiempo (perdona que solo sea teoria y nada de codigo, esque son las 6 am y tengo muuucho sueeeño)

Antes de enviar el e-mail verifica que la ip esta guardada en la BD y si es asi compara la fecha que esta almacenada en la Bd con la fecha actual (funcion date(); ) y sacas la diferencia y si esta en el rango permitido actualizas la DB con la nueva fecha y envias el e-mail y si no pues mandas un mensaje de error.



Saludos
__________________
Keep f***ing learning
Ask for f***ing help.
Use f***ing spell check.
Think about all the f***ing possibilities.
  #5 (permalink)  
Antiguo 07/08/2005, 18:23
 
Fecha de Ingreso: julio-2005
Ubicación: Boyoliso
Mensajes: 661
Antigüedad: 12 años, 4 meses
Puntos: 0
Je.. grax por la intencion dvd adn.. pero igual, en teoria es facil saber lo ke hay ke hacer... lo ke no yo no se es como llevar a ke sea un hecho..

Si alguien de algun ejemplo practico, o una pagina ke tenga este codigo completo, y me lo pueda mostrar, muchas gracias!!!
  #6 (permalink)  
Antiguo 07/08/2005, 18:53
 
Fecha de Ingreso: noviembre-2002
Ubicación: Mex
Mensajes: 140
Antigüedad: 15 años
Puntos: 0
Es muy sencillo encontrar códigos como el que pides pero es algo muy especifico, nada general.

Te aseguro que podrás aprender más de PHP si investigas y aplicas lo que encuentras; te llevarás gratas sorpresas.


En http://www.phpbuilder.com/ econtrarás muchas cosas.
Saludos.
__________________
escribiendo mi libro de AJAX
  #7 (permalink)  
Antiguo 07/08/2005, 19:24
 
Fecha de Ingreso: julio-2005
Ubicación: Boyoliso
Mensajes: 661
Antigüedad: 12 años, 4 meses
Puntos: 0
Si eso es lo que estoy tratando desde hace rato, llevo horas buscando pero no encuentro nada.. hay miles d escripts, pero no he encontrado el ke me explike exactamente lo ke necesito..

he buscado con keys como:

"PHP formulario anti spam"
"PHP usuario envia 1 solo formulario"
"PHP proteger formulario"
"scripts+php+formulario+enviar"

y en fin.. no me acuerdo pero ya llevo rato buscando con mushcas keys similares, pero sigo sin encontrar nada..

Si alguien me puede ayudar con la buskeda, muchas gracias, o me diga alguna pagina donde expliken, eso..

"Una vez ke el usuario de SEND al formulario, no pueda volver a enviar datos hasta dentor de una hora, o un dia, o no se, cualquier X tiempo"

GRacias!!!!
  #8 (permalink)  
Antiguo 08/08/2005, 03:51
Avatar de DINASEN  
Fecha de Ingreso: marzo-2003
Mensajes: 997
Antigüedad: 14 años, 9 meses
Puntos: 1
mmmm... el uso de ip para permitir o no permitir email te puede dar muchos problemas, ya que mucha gente sale por proxy de una misma compañia y con lo cual el script te fallara...

Si exsiten usuarios en tu web guarda en la bd mejor el nombre de usuario que la ip...

si no tienes usuarios, podrias hacer alguna validacion de cara al servidor para que no solo sea darle a enviar, como por ejemplo la tipica imagen con codigo aleatorio que se usa en el login de algunos portales nukes..

El codigo si ya has manejado alta ediciones y tal con mysql es simplemente eso
prepara tu alta, comprobaciones y postea los problemas puntuales que te fallan surgiendo


Un Saludo
  #9 (permalink)  
Antiguo 08/08/2005, 03:57
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 13 años, 4 meses
Puntos: 101
Cita:
Iniciado por DvD AdN
(...) verifica que la ip esta guardada en la BD y si es asi compara la fecha que esta almacenada en la Bd con la fecha actual (funcion date(); ) y sacas la diferencia (...)
Solo comentar que, como estás planteando usar BD, es mejor usar funciones SQL para las operaciones que tienen que ver con fechas; en lo que sugieres en vez de usar date() de PHP mejor usar NOW() de SQL y para obtener la diferencia podría usarse DATE_DIFF() e includo DATE_ADD() ó DATE_SUB() podrían servir (yo las ocuparia). Justo en otro post se esta comentó esto de la eficiencia de usar SQL...


Aprendix, creo estás siendo muy específico con tu busqueda , prueba algo más géneral... te sugiero analizes el sistema para mostrar usuarios en línea (en las FAQ se encuentra 1 y por ahí hay un script mio que trabaja con BD), podría servirte... no es nada complicado y la lógica es similar (para no decir que la misma).

... muestra avancez y/o problemas que vayas teniendo y se te podrá ayudar/orientar en base a eso.

Un saludo!
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #10 (permalink)  
Antiguo 08/08/2005, 04:03
 
Fecha de Ingreso: agosto-2005
Mensajes: 17
Antigüedad: 12 años, 4 meses
Puntos: 0
y si pruebas a usar una cookie?, puedes crear una cookie en el ordenador del cliente con una caducidad de un día, lo único que tienes que hacer es comprobar si existe dicha cookie mediante javascript cada vez que se envia el formulario.

Saludos
  #11 (permalink)  
Antiguo 08/08/2005, 04:06
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 13 años, 4 meses
Puntos: 101
no había visto DINASEN había escrito ...

Lo que dices de las IP's es cierto, no es algo 100% fiable, pero me parece hay un método para encontrar la IP real sin que haya problemas con el PROXY... creo esta en las FAQ... más igual esta el tema de Ip's dinámicas... todo depende de a quién vaya dirigido el sistema, como bien dijo, si tienes un sistema de usuaruios y se va a manejar solo para usauarios registrados es mejor te bases en tus registros y no por IP... insisto, ve un sistema de "visitas/usuarios on-line" .

Respecto a las imágenes aleatorias igual hay funciones en las FAQ... si lo que quieres evitar es SPAM (me olvidé del tema ) te va más útil...

__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #12 (permalink)  
Antiguo 08/08/2005, 04:09
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 13 años, 4 meses
Puntos: 101
... (me rio que mientras escribo escribe otro ... jejeje)

Una cookie en la PC de nuestro visitante no es nada seguro: las pueden borrar ó simplemente pueden tenerlas bloqueadas... con esto no digo que no sea opción y en efecto es algo sencillo, todo depende de qué tanta seguridad/eficacia necesite (ó quiera darsele, mejor dicho) el sistema...

Un saludo!...
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
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 04:36.