Ver Mensaje Individual
  #1 (permalink)  
Antiguo 17/04/2012, 11:04
tebarin
 
Fecha de Ingreso: marzo-2012
Mensajes: 19
Antigüedad: 12 años, 1 mes
Puntos: 0
Captcha en formulario (no hay manera)

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.