Ver Mensaje Individual
  #1 (permalink)  
Antiguo 23/09/2010, 01:37
joankass
 
Fecha de Ingreso: septiembre-2010
Mensajes: 8
Antigüedad: 14 años, 1 mes
Puntos: 0
Cómo implementar captcha en formulario HTML+PHP

Hola a todos y gracias por acogerme en vuestra comunidad.

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" />&nbsp; 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> 
Y este es el código php:

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']);
}

?>
El caso es que no se como ni donde (ni tampoco cual) tengo que poner el código en php para que verifique el captcha. Si es correcta la imagen captcha, que redireccione a la página 'url_ok' y si no es correcta a 'url_error'. Estas dos url redireccionan a páginas html que informan del envío correcto del mensaje o no, y finalmente, cada una de ellas redirecciona al index de la web.

Espero haberme explicado correctamente. De todas formas, espero vuestas sugerencias.

Muchas gracias a todos por vuestra ayuda.