Llevo un par de dias intentando incluir un captcha en un formulario y no lo consigo. Soy nuevo en todo esto, así que me imagino que habré hecho una tonteria en algún sitio. Pensaba que lo del captcha iba a ser fácil pero... no hay manera :(
Explico:
Con este formulario, en el archivo formform.php
<form action="<?=$_SERVER['PHP_SELF']?>" method="post" name="formweb" onSubmit = "return valida(this)">
<TABLE class="formulario" WIDTH="100%" CELLSPACING="20">
<TR>
<TD></TD>
<TD><p></p></TD>
<TD></TD>
</TR>
<TR>
<TD><h2> <span style="color: #FFFFFF">Nombre</h2></TD>
<TD>
<INPUT class="tb2" type=text name="nombre" size="30" maxlength="50">
</TD>
<TD><b>Escriba aquí su nombre...</b>
</TD>
</TR>
<TR>
<TD><h2><span style="color: #FFFFFF">Dirección de email</h2></TD>
<TD>
<INPUT class="tb2" type=text name="email" size="20" maxlength="30">
</TD>
<TD><b>Escriba aquí su email.</b>
</TD>
</TR>
y sigue y sigue
hasta que se cierra con
<TR>
<TD><h2><span style="color: #FFFFFF">Código de seguridad</h2></TD>
<TD><img src="/captcha/captcha.php" /><br/><input type="text" size="12" name="captcha" />
</TD>
<TD><b></b></TD>
</TR>
</TABLE>
<input class="tb2" type="reset" value="Borrar" />
<input class="tb2" type="submit" name="procesa_form" value="Enviar"/>
</FORM>
El captcha es captcha facil.
Como habreis visto, al pulsar Submit (enviar), mando la información a la función javascript valida(this), que se encarga de verificar que todo ha sido introducido correctamente.
function valida(form)
{
if(form.nombre.value.length==0)
{
alert("hay que meter el nombre!!");
form.nombre.focus()
return false;
}
if(form.email.value.length==0)
{
alert("hay que meter el email!!");
form.email.focus();
return false;
}
etc, etc, hasta llegar a la parte PHP
else
{
<?php
$nombre = "";
$email = "";
$nombrew = "";
$formcontent="";
$recipient = "";
$subject = "";
$mailheader = "";
$nombre = $_POST['nombre'];
$email = $_POST['email'];
$nombrew = $_POST['nombrew'];
$formcontent="Nombre: $nombre \n Email: $email \n Web: $nombrew";
$recipient = "[email protected]";
$subject = "NombreWeb";
$mailheader = "formulario";
mail($recipient, $subject, $formcontent, $mailheader) or die("Error!");
?>
}
return true;
}
Pues lo he intentado todo: muchos captchas diferentes, pasar el código a una variable javascript, usar echos, hacer al principio de la parte PHP esto (como recomienda el autor del captcha):
if(strtoupper($_REQUEST["captcha"]) == $_SESSION["captcha"]){
# // REMPLAZO EL CAPTCHA USADO POR UN TEXTO LARGO PARA EVITAR QUE SE VUELVA A INTENTAR
# $_SESSION["captcha"] = md5(rand()*time());
# // INSERTA EL CÓDIGO EXITOSO AQUI
# }else{
# // REMPLAZO EL CAPTCHA USADO POR UN TEXTO LARGO PARA EVITAR QUE SE VUELVA A INTENTAR
# $_SESSION["captcha"] = md5(rand()*time());
# // INSERTA EL CÓDIGO DE ERROR AQUÍ
# }
Ya he perdido la cuenta de todo lo que he intentado. Antes de introducir el captcha todo funcionaba perfectamente.
¿Alguna ayuda, please?
Y gracias de antemano.