Cita:
Iniciado por emprear La forma más efectiva es usar un captcha que trabaje con sesiones
Demo
http://foros.emprear.com/php/captcha...atir-de-un-gif
Otra sería usar ajax, pero estás expuesto a que javascript esté desactivado
form.html
Código HTML:
Ver original<!DOCTYPE html>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<script type="text/javascript"> //<![CDATA[
var rootdomain="http://"+window.location.hostname;
function cargarAjax(url,divAjax,idformulario){
// Recogemos los valores del form
var elNombre = document.getElementById('nombre').value;
var elApellido = document.getElementById('apellido').value;
//construís la query
var parametros = "?nombre="+elNombre+"&apellido="+elApellido;
var contenidoAjax = false;
if(window.XMLHttpRequest) {
contenidoAjax = new XMLHttpRequest();
}else if(window.ActiveXObject) {
contenidoAjax = new ActiveXObject("Microsoft.XMLHTTP");
}else{
alert('Su navegador no soporta Ajax');
}
contenidoAjax.onreadystatechange=function(){
cargaPagina(contenidoAjax,divAjax,idformulario);
}
contenidoAjax.open('GET', url+parametros, true);
contenidoAjax.send(null);
}
function cargaPagina(contenidoAjax,divAjax,idformulario){
if(contenidoAjax.readyState == 4 && (contenidoAjax.status==200 || window.location.href.indexOf("http")==-1)){
document.getElementById(divAjax).innerHTML="Gracias <b>" + contenidoAjax.responseText + "<\/b><br \/>el formulario fue procesado";
//Reseteas y ocultás el form
document.getElementById('nombre').value = "";
document.getElementById('apellido').value = "";
document.getElementById(idformulario).style.display = "none";
}
}
//]]>
<form action="#" id="formulario1"> <input type="text" value="" id="nombre" name="nombre" autocomplete="off"/><br /> <input type="text" value="" id="apellido" name="apellido" autocomplete="off"/><br /> <input type="button" value="procesar" onclick="cargarAjax('nombre.php','mensaje','formulario1')" />
nombre.php
Código PHP:
Ver original<?php
echo $_GET['nombre'] . " " . $_GET['apellido'];
?>
Te aclaro que este segundo ejemplo no tiene incluida ningún tipo de validación.
En este otro ejemplo combino ambas cosas
http://foros.emprear.com/php/demo-form-ajax-captcha/
la diferencia es que para darle algunosefectos, en lugar de usar javascript puro para el envío x Ajax. utilicé jQuery
Saludos
Bueno lo de sesiones como mencionas es una buena idea pero de ahí a usar captcha no lo se (no digo que no cumple lo que se pide), ya que por ejemplo que sea un simple formulario de registrar dos campos no creo que sea necesario poner captcha para simplemente poder no realizar varios submit consecutivos.
Ademas como menciona el compañero de arriba si tu captcha o ajax tiene un tiempo de retardo de 10 segundos yo podria hacer varios click o submit al mismo tiempo.