Foros del Web » Programando para Internet » PHP »

no funciona formulario de contacto con captcha

Estas en el tema de no funciona formulario de contacto con captcha en el foro de PHP en Foros del Web. Hola amigos: Estoy creando un formulario de contacto con 2 números aleatorios que el usuario a de sumar para enviar el mensaje y así evitar ...
  #1 (permalink)  
Antiguo 21/11/2011, 16:02
 
Fecha de Ingreso: diciembre-2009
Mensajes: 47
Antigüedad: 14 años, 4 meses
Puntos: 3
Pregunta no funciona formulario de contacto con captcha

Hola amigos:
Estoy creando un formulario de contacto con 2 números aleatorios que el usuario a de sumar para enviar el mensaje y así evitar spam , pero no se donde tengo el fallo que siempre me dice que la suma no es correcta.
haber si alguíen se apiada de mí y me encuentra el fallo , le haría un monumento, puesto que estoy desesperado y no se donde está el o los fallos.
Bueno al grano y no me enrollo más el código abajo:


<body>


<div id="contenedor"><!-- the cascading style sheet-->
<link href="file:///C|/wamp/www/salario/formulari_contacto/style.css" rel="stylesheet" type="text/css" />


<div id="contentForm">

<!-- The contact form starts from here-->
<?php

//alimentamos el generador de aleatorios
mt_srand (time());
//generamos un número aleatorio

$control1 = mt_rand(0,12);

//alimentamos el generador de aleatorios
mt_srand (time());
//generamos un número aleatorio
$control2 = mt_rand(2,15);

$control3=$control1+$control2;


$error = ''; // error message
$name = ''; // sender's name
$email = ''; // sender's email address
$subject = ''; // subject
$message = ''; // the message itself
$spamcheck = ''; // Spam check

if(isset($_POST['send']))
{
$name = $_POST['name'];
$email = $_POST['email'];
$subject = $_POST['subject'];
$message = $_POST['message'];
$spamcheck = $_POST['spamcheck'];

if(trim($name) == '')
{
$error = '<div class="errormsg">Por favor escriba su nombre!</div>';
}
else if(trim($email) == '')
{
$error = '<div class="errormsg">POr favor indique su direccion Email!</div>';
}
else if(!isEmail($email))
{
$error = '<div class="errormsg">Su Email no es valido, por favor intente de nuevo!!</div>';
}
if(trim($subject) == '')
{
$error = '<div class="errormsg">Indique el asunto del mensaje!</div>';
}
else if(trim($message) == '')
{
$error = '<div class="errormsg">Escriba su mensaje!</div>';
}
else if(trim($spamcheck) == '')
{
$error = '<div class="errormsg">Realice la suma para controlar el Spam!</div>';
}
else if(trim($spamcheck) != $control3)
{
$error = '<div class="errormsg">Control Spam: El resultado de la suma no es correcta! ($control1 + $control2) = ???</div>';
}
if($error == '')
{
if(get_magic_quotes_gpc())
{
$message = stripslashes($message);
}

// the email will be sent here
// make sure to change this to be your e-mail
$to = "[email protected]";

// the email subject
// '[Contact Form] :' will appear automatically in the subject.
// You can change it as you want

$subject = '[Contacto web] : ' . $subject;

// the mail message ( add any additional information if you want )
$msg = "From : $name \r\ne-Mail : $email \r\nSubject : $subject \r\n\n" . "Message : \r\n$message";

mail($to, $subject, $msg, "From: $email\r\nReply-To: $email\r\nReturn-Path: $email\r\n");
?>

<!-- Message sent! (change the text below as you wish)-->
<div style="text-align:center;">
<h1>Enviado</h1>
<p>Gracias <b><?=$name;?></b>, le responderemos lo antes posible!</p>
</div>
<!--End Message Sent-->


<?php
}
}

if(!isset($_POST['send']) || $error != '')
{
?>
<!--Error Message-->
<?=$error;?>

<form method="post" name="contFrm" id="contFrm" action="">


<label><span class="required">*</span> Nombre:</label>
<input name="name" type="text" class="box" id="name" size="50" value="<?=$name;?>" />

<label><span class="required">*</span> Email: </label>
<input name="email" type="text" class="box" id="email" size="50" value="<?=$email;?>" />

<label><span class="required">*</span> Asunto: </label>
<input name="subject" type="text" class="box" id="subject" size="50" value="<?=$subject;?>" />

<label><span class="required">*</span> Mensaje: </label>
<textarea name="message" cols="50" rows="6" id="message"><?=$message;?></textarea>
<label><span class="required">*</span> Control spam:
<?php
echo "$control1 + $control2";

?>
<b> =</b></label>
<input name="spamcheck" type="text" class="box" id="spamcheck" size="4" value="<?=$spamcheck;?>" /><br />
<br />

<!-- Submit Button-->
<input name="send" type="submit" class="button" id="send" value="" />
</form>

<!-- E-mail verification. Do not edit -->
<?php



}

function isEmail($email)
{
return(preg_match("/^[-_.[:alnum:]]+@((([[:alnum:]]|[[:alnum:]][[:alnum:]-]*[[:alnum:]])\.)+(ad|ae|aero|af|ag|ai|al|am|an|ao|aq|ar|arpa|a s|at|au|aw|az|ba|bb|bd|be|bf|bg|bh|bi|biz|bj|bm|bn |bo|br|bs|bt|bv|bw|by|bz|ca|cc|cd|cf|cg|ch|ci|ck|c l|cm|cn|co|com|coop|cr|cs|cu|cv|cx|cy|cz|de|dj|dk| dm|do|dz|ec|edu|ee|eg|eh|er|es|et|eu|fi|fj|fk|fm|f o|fr|ga|gb|gd|ge|gf|gh|gi|gl|gm|gn|gov|gp|gq|gr|gs |gt|gu|gw|gy|hk|hm|hn|hr|ht|hu|id|ie|il|in|info|in t|io|iq|ir|is|it|jm|jo|jp|ke|kg|kh|ki|km|kn|kp|kr| kw|ky|kz|la|lb|lc|li|lk|lr|ls|lt|lu|lv|ly|ma|mc|md |mg|mh|mil|mk|ml|mm|mn|mo|mp|mq|mr|ms|mt|mu|museum |mv|mw|mx|my|mz|na|name|nc|ne|net|nf|ng|ni|nl|no|n p|nr|nt|nu|nz|om|org|pa|pe|pf|pg|ph|pk|pl|pm|pn|pr |pro|ps|pt|pw|py|qa|re|ro|ru|rw|sa|sb|sc|sd|se|sg| sh|si|sj|sk|sl|sm|sn|so|sr|st|su|sv|sy|sz|tc|td|tf |tg|th|tj|tk|tm|tn|to|tp|tr|tt|tv|tw|tz|ua|ug|uk|u m|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|ye|yt|yu|za| zm|zw)$|(([0-9][0-9]?|[0-1][0-9][0-9]|[2][0-4][0-9]|[2][5][0-5])\.){3}([0-9][0-9]?|[0-1][0-9][0-9]|[2][0-4][0-9]|[2][5][0-5]))$/i"
,$email));
}
?>
<!-- END CONTACT FORM -->




</div> <!-- /contentForm -->

<div class="pie" id="pie de pagina">

© paginas web de castro</div>

</div>
</body>
</html>
  #2 (permalink)  
Antiguo 21/11/2011, 16:26
 
Fecha de Ingreso: mayo-2006
Mensajes: 475
Antigüedad: 17 años, 11 meses
Puntos: 58
Respuesta: no funciona formulario de contacto con captcha

Hola, al recargar la página cuando envías el form, estás perdiendo el valor $control3 ya que se vuelve a generar. Deberías guardar el valor en una variable de session tipo esto:

Código PHP:
<?php
session_start
()

if(!isset(
$_POST['send'])){
//alimentamos el generador de aleatorios
mt_srand (time());
$control1 mt_rand(0,12);
mt_srand (time());
//generamos un número aleatorio
$control2 mt_rand(2,15);
$_SESSION['control3']=$control1+$control2;
}
?>
y luego para comparar
Código PHP:
else if(trim($spamcheck) != $_SESSION['control3'])
{
$error '<div class="errormsg">Control Spam: El resultado de la suma no es correcta! ($control1 + $control2) = ???</div>';

  #3 (permalink)  
Antiguo 22/11/2011, 17:38
 
Fecha de Ingreso: diciembre-2009
Mensajes: 47
Antigüedad: 14 años, 4 meses
Puntos: 3
Respuesta: no funciona formulario de contacto con captcha

perfecto maestro esto si funciona , solo un detallito

session_start();
Muchas gracias por todo cuando te atrancas no sales ni haciendote palanca je je....
www.amigasmascotas.com
  #4 (permalink)  
Antiguo 25/11/2011, 16:35
 
Fecha de Ingreso: diciembre-2009
Mensajes: 47
Antigüedad: 14 años, 4 meses
Puntos: 3
Respuesta: no funciona formulario de contacto con captcha

hola de nuevo :
me he dado cuenta que cuando tengo un error en el formulario al rellenarlo desde la página el captcha no se me vuelve a cargar , sabes la explicacion
puedes verlo en www.calculanomina.com y el código quedó así:

<div id="informacion">
<div id="anuncio_largo">
<?php


include('anuncio_sup.html')
?>
</div>


<div id="foto">
<div id="bloque_derecho">
<?php

include('cuadrado.html')
?>
</div>
<hr class="azul" />
<p>&nbsp;</p>
<p>En breve:</p>
<p>Otras calculadoras</p>
<p>Calcula el dia de tu Ovulacion<br />
</p>
<hr color="#00FFFF" class="azul"/>
<p> <br />
</p>
</div>
<div id="saludo">
<h1>Para contactar con la web rellene este formulario y le contestaremos tan rapido como nos sea posible </h1>
</div>
<div id="info_general"><!-- the cascading style sheet-->
<link href="file:///C|/wamp/www/salario/formulari_contacto/style.css" rel="stylesheet" type="text/css" />


<div id="contentForm">

<!-- The contact form starts from here-->
<?php
session_start();

if(!isset($_POST['send'])){
//alimentamos el generador de aleatorios
mt_srand (time());
$control1 = mt_rand(0,12);
mt_srand (time());
//generamos un número aleatorio
$control2 = mt_rand(2,15);
$_SESSION['control3']=$control1+$control2;
}
?>

<?php
$error = ''; // error message
$name = ''; // sender's name
$email = ''; // sender's email address
$subject = ''; // subject
$message = ''; // the message itself
$spamcheck = ''; // Spam check

if(isset($_POST['send']))
{
$name = $_POST['name'];
$email = $_POST['email'];
$subject = $_POST['subject'];
$message = $_POST['message'];
$spamcheck = $_POST['spamcheck'];

if(trim($name) == '')
{
$error = '<div class="errormsg">Por favor escriba su nombre!</div>';
}
else if(trim($email) == '')
{
$error = '<div class="errormsg">Por favor indique su direccion Email!</div>';
}
else if(!isEmail($email))
{
$error = '<div class="errormsg">Su Email no es valido, por favor intente de nuevo!!</div>';
}
if(trim($subject) == '')
{
$error = '<div class="errormsg">Indique el asunto del mensaje!</div>';
}
else if(trim($message) == '')
{
$error = '<div class="errormsg">Escriba su mensaje!</div>';
}
else if(trim($spamcheck) == '')
{
$error = '<div class="errormsg">Realice la suma para controlar el Spam!</div>';
}
else if(trim($spamcheck) != $_SESSION['control3'])
{
$error = '<div class="errormsg">Control Spam: la suma no es correcta! ($control1 + $control2) = ???</div>';
}

if($error == '')
{
if(get_magic_quotes_gpc())
{
$message = stripslashes($message);
}

// the email will be sent here
// make sure to change this to be your e-mail
$to = "[email protected]";

// the email subject
// '[Contact Form] :' will appear automatically in the subject.
// You can change it as you want

$subject = '[Contacto web] : ' . $subject;

// the mail message ( add any additional information if you want )
$msg = "From : $name \r\ne-Mail : $email \r\nSubject : $subject \r\n\n" . "Message : \r\n$message";

mail($to, $subject, $msg, "From: $email\r\nReply-To: $email\r\nReturn-Path: $email\r\n");
?>

<!-- Message sent! (change the text below as you wish)-->
<div style="text-align:center;">
<h1>Enviado</h1>
<p>Gracias <b><?=$name;?></b>, le responderemos lo antes posible!</p>
</div>
<!--End Message Sent-->


<?php
}
}

if(!isset($_POST['send']) || $error != '')
{
?>
<!--Error Message-->
<?=$error;?>

<form method="post" name="contFrm" id="contFrm" action="">


<p>
<label><span class="required">*</span> Nombre:</label>
<input name="name" type="text" class="box" id="name" size="50" value="<?=$name;?>" />

<label><span class="required">*</span> Email: </label>
<input name="email" type="text" class="box" id="email" size="50" value="<?=$email;?>" />

<label><span class="required">*</span> Asunto: </label>
<input name="subject" type="text" class="box" id="subject" size="50" value="<?=$subject;?>" />

<label><span class="required">*</span> Mensaje: </label>
<textarea name="message" cols="50" rows="6" id="message"><?=$message;?>
</textarea>
</p>
<p>&nbsp;</p>
<p>
<label><span class="required">*</span> Control spam:
<?php
echo "<br/><b>$control1 + $control2 =";

?>
</label>
</p>
<p>
<input name="spamcheck" type="text" class="box" id="spamcheck" size="4" value="<?=$spamcheck;?>" />
<br />
<br />

<!-- Submit Button-->
<input name="send" type="submit" class="button" id="send" value="" />
</p>
</form>

<!-- E-mail verification. Do not edit -->
<?php



}

function isEmail($email)
{
return(preg_match("/^[-_.[:alnum:]]+@((([[:alnum:]]|[[:alnum:]][[:alnum:]-]*[[:alnum:]])\.)+(ad|ae|aero|af|ag|ai|al|am|an|ao|aq|ar|arpa|a s|at|au|aw|az|ba|bb|bd|be|bf|bg|bh|bi|biz|bj|bm|bn |bo|br|bs|bt|bv|bw|by|bz|ca|cc|cd|cf|cg|ch|ci|ck|c l|cm|cn|co|com|coop|cr|cs|cu|cv|cx|cy|cz|de|dj|dk| dm|do|dz|ec|edu|ee|eg|eh|er|es|et|eu|fi|fj|fk|fm|f o|fr|ga|gb|gd|ge|gf|gh|gi|gl|gm|gn|gov|gp|gq|gr|gs |gt|gu|gw|gy|hk|hm|hn|hr|ht|hu|id|ie|il|in|info|in t|io|iq|ir|is|it|jm|jo|jp|ke|kg|kh|ki|km|kn|kp|kr| kw|ky|kz|la|lb|lc|li|lk|lr|ls|lt|lu|lv|ly|ma|mc|md |mg|mh|mil|mk|ml|mm|mn|mo|mp|mq|mr|ms|mt|mu|museum |mv|mw|mx|my|mz|na|name|nc|ne|net|nf|ng|ni|nl|no|n p|nr|nt|nu|nz|om|org|pa|pe|pf|pg|ph|pk|pl|pm|pn|pr |pro|ps|pt|pw|py|qa|re|ro|ru|rw|sa|sb|sc|sd|se|sg| sh|si|sj|sk|sl|sm|sn|so|sr|st|su|sv|sy|sz|tc|td|tf |tg|th|tj|tk|tm|tn|to|tp|tr|tt|tv|tw|tz|ua|ug|uk|u m|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|ye|yt|yu|za| zm|zw)$|(([0-9][0-9]?|[0-1][0-9][0-9]|[2][0-4][0-9]|[2][5][0-5])\.){3}([0-9][0-9]?|[0-1][0-9][0-9]|[2][0-4][0-9]|[2][5][0-5]))$/i"
,$email));
}
?>
<!-- END CONTACT FORM -->




</div> <!-- /contentForm --></div>
</div>
<div id="anuncio_fin">
<?php
include('alargado_enlace_texto.html')
?>
</div>
<div id="pie">
<?php
include('copyright.php');
?></div>

</div>
</body>
</html>


Gracias por anticipado.

Etiquetas: contacto, formulario
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:17.