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

Gracias a todos por contestar. Os cuento cómo lo resolví por si le sirve a alguien.

Primero quiero decir que por mi pequeña experiencia, mejor no mezclar código. Cuando he creado un archivo para PHP, otro para Javascript y otro para HTML es cuando esto ha empezado a funcionar.

Así que he creado una nueva carpeta en el root. Ahí están el html (contacto.html), el javascript para validar (validar.js) y el PHP para comprobar el captcha y enviar la info (contacto.PHP). Además, una carpeta captcha con los archivos de captcha fácil [URL="http://www.captchafacil.com.ar/"]http://www.captchafacil.com.ar/[/URL]

El archivo HTML con el formulario, con el siguiente código (resumido, que tiene muchísimas partes):


<form method="post" action="/prueba/contacto.php" onsubmit="return Validar(this);">


<TABLE class="formulario" WIDTH="100%" CELLSPACING="20" border="0">

<TR>
<TD>&nbsp&nbsp&nbsp&nbsp</TD>
<TD><p></p></TD>
<TD></TD>
<TD>&nbsp&nbsp&nbsp&nbsp</TD>
</TR>

<TR>
<td colspan="5"><h1 align=center><span style="color: #FFFFFF">DATOS</h1></td>
</TR>

<TR>
<TD></TD>
<TD><h2> <span style="color: #FFFFFF">Nombre</h2></TD>
<TD>
<INPUT class="tb2" type=text name="nombre" size="40" maxlength="50">
</TD>
<TD><b>Escriba aquí su nombre...</b>
</TD>
<TD></TD>
</TR>

<TR>
<TD></TD>
<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>
<TD></TD>
</TR>

<TR>
<TD></TD>
<TD><h2> <span style="color: #FFFFFF">Dirección de email</h2></TD>
<TD>
<INPUT class="tb2" type=text name="email2" size="20" maxlength="30">
</TD>
<TD><b>...Y otra vez por favor</b>
</TD>
<TD></TD>
</TR>
.
.
.
.hasta llegar al captcha
.
.


<TR>
<TD></TD>
<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>
<TD></TD>
</TR>

</TABLE>
<input class="tb2" type="reset" value="Borrar" />
<input class="tb2" type="submit" name="procesa_form" value="Enviar"/>
</FORM>

El archivo validar.js con diferentes funciones para validar diferentes aspectos de la info introducida:

function Validar(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;
}

if(form.email2.value.length==0)
{
alert("hay que meter el email!!");
form.email.focus();
return false;
}

.
.

. Es muy largo también )P
.
.
.



Y por último, el archivo PHP

<?php

session_start();
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());

$nombre = "";
$email = "";

$formcontent="";
$recipient = "";
$subject = "";
$mailheader = "";

$nombre = $_POST['nombre'];
$email = $_POST['email'];

$formcontent="Nombre: $nombre \n Email: $email";
$recipient = "[email protected]";
$subject = "Correo";
$mailheader = "tralari \r\n";

mail($recipient, $subject, $formcontent, $mailheader) or die("Error!");
die("Muchas gracias, su mensaje fue enviado correctamente");
}
else
{
die("Error: El código introducido no es correcto");
}

?>

Y eso es todo.