He estado dando vueltas a ciegas por toda la red con este asunto y no he encontrado una solución que me funcione.
Me refiero a la implantación de captcha en un formulario html que utiliza php para envío del mensaje, algo muy normal y utilizado.
El problema lo tengo en el tipo de web (gestor de contenidos comercial) que utilizo. Es un sistema muy cerrado y que da muy poco margen de uso. El servidor donde se encuentra alojado soporta PHP y JavaScript.
He intentado implantar recaptcha y script similares pero no funcionan, me dejan la página en blanco.
La única solución que he encontrado es la implantación tradicional: alojar en el directorio un generador de capcha en php, hacer la llamada a éste desde el formulario HTML y cuando se ejecute la accion enviar.php, que el archivo php verifique, además de la disponibilidad de los datos del formulario, además compruebe la validez del captcha.
Este es el código que utilizo para el formulario (muy sencillo):
Código HTML:
<html> <head> </head> <body> <form name="fvalida" action="enviar.php" method="post"> Nombre y apellidos <!--webbot bot="Validation" s-data-type="String" b-allow-letters="TRUE" b-value-required="TRUE" i-minimum-length="10" i-maximum-length="60" --> <input type="text" name="Nombre" size="71" maxlength="60" /><br> <br> D.N.I. <!--webbot bot="Validation" b-value-required="TRUE" i-minimum-length="7" i-maximum-length="12" --> <input type="text" name="DNI" size="18" maxlength="12" /> Correo electrónico <!--webbot bot="Validation" b-value-required="TRUE" i-minimum-length="8" --> <input type="text" name="Correo" size="40"><br> <br> <br> Mensaje <!--webbot bot="Validation" b-value-required="TRUE" i-minimum-length="25" --> <textarea rows="3" name="Mensaje" cols="69"></textarea><br> <br> <input type="submit" value=" Enviar "> <input type="reset" value="Borrar" name="REESTABLECER"> </form> </body> </html>
Código PHP:
<?php
// Configuracion
$conf['mailDestinatario'] = '[email protected]';
$conf['mailAsunto'] = 'Buzon';
$conf['url_error'] = 'http://www.dominio.es/pages.php?pageid=112&menu_id=';
$conf['url_ok'] = 'http://www.dominio.es/pages.php?pageid=111&menu_id=';
######################################################################
# codigo de verificacion
######################################################################
// Validar argumentos
if(!$_POST) {
header('Location: '.$conf['url_error']);
exit;
}
// Limpiar input de usuario
foreach($_POST as $id=>$value) {
$var[$id] = strip_tags(trim($value));
}
// Definir cuerpo del email
foreach($var as $id=>$value) {
$mailCuerpo .= "$id : $value\r\n";
}
// Enviar correo
if(mail($conf['mailDestinatario'], $conf['mailAsunto'], $mailCuerpo)) {
header('Location: '.$conf['url_ok']);
} else {
header('Location: '.$conf['url_error']);
}
?>
Espero haberme explicado correctamente. De todas formas, espero vuestas sugerencias.
Muchas gracias a todos por vuestra ayuda.