Ver Mensaje Individual
  #1 (permalink)  
Antiguo 17/09/2011, 22:35
Avatar de NRamirezCR
NRamirezCR
 
Fecha de Ingreso: septiembre-2011
Ubicación: San José, Costa Rica
Mensajes: 4
Antigüedad: 12 años, 7 meses
Puntos: 0
Pregunta Captcha sin funcionar...

Hola amigos foreros! soy nuevo acá, y siempre que tengo una duda, y la googleo, pues este foro me la responde! Pero ahora, no encuentro una respuesta satisfactoria para la duda que tengo, y además soy reciente en PHP, así que aquí va...

Tengo un formulario de contacto, que descargué y posteriormente edité lo que podía del código html y css, pero me ha llegado mucho spam al correo, x lo que quiero meter un captcha y no lo logro... aquí está el código:

Código:
<?php
//proceso del formulario
// si existe "enviar"...
if (isset ($_POST['enviar'])) {

	//recogemos las variables
	$nombre = $_POST['nombre'];
	$email = $_POST['email'];
	$comentario = $_POST['comentario'];

	//comprobamos si todos los campos fueron completados
	
	if (!preg_match("/([\w\.\-]+)(\@[\w\.\-]+)(\.[a-z]{2,4})+/i", $email)) {
		$flag='err';
		$mensaje='<div class="errorContForm"><p>Correo electr&oacute;nico inv&aacute;lido.</p></div>';
	} else {
		$emailOk=$_POST['email'];
	}
	
		if ($nombre!='' && $email==$emailOk && $vsecc==$captchaOk && $comentario!='') {
		// si es asi armamos el html
		$contenido = '<html><body>';
		$contenido .= '<h2>Contacto desde formulario</h2>';
		$contenido .= '<p>Enviado el '.  date("d M Y").'</p>';
		$contenido .= '<hr />';
		$contenido .= '<p>Nombre: <strong>'.$nombre.'</strong>';
		$contenido .= '<p>Email: <strong>'.$email.'</strong>';
		$contenido .= '<p>Comentario: <strong>'.$comentario.'</strong>';
		$contenido .= '<hr />';
		$contenido .= '</body></html>';

		// si todos los campos fueron completados enviamos el mail
		mail ("[email protected]", "Formulario de contacto", $contenido, "From: $email\nContent-Type: text/html; charset=iso-8859-1\nContent-Transfer-Encoding: 8bit"); 
		$flag='ok';
		$mensaje='<div id="warningBox">
			<h4>&iexcl;Gracias por contactar a Seisi&uacute;n!</h4>
			<p>Tu mensaje ha sido enviado y ser&aacute; respondido pronto.</p>
		</div>';
		header("refresh:3;url=index.html"); /* Redirect browser */

	} else {
		//si no todos los campos fueron completados se frena el envio y avisamos al usuario	
		$flag='err';
		$mensaje='<div class="errorContForm"><p>Revis&aacute; bien tu mensaje... Puede que falte algo...</p></div>';
	}
}
?>

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="es" lang="es" dir="ltr">
<head>
<!-- aquí hay código irreelevante -->
Posteriormente viene esto:

Código:
<!-- después de mucho bla bla bla -->

<!-- Begin Contact Form -->
<? echo $mensaje; /*mostramos el estado de envio del form */ ?>
<? if ($flag!='ok') {
	$admin_email = "[email protected]";
	$imgcode = "YES";
	$vsecc = isset($_POST['vsecc']) ? strtoupper($_POST['vsecc']) : "";
?>
<form class="seisiunForm" action="contact.php" method="post">
	<div>
		<label>* Nombre:</label>
		<input class="textBox" type="text" name="nombre" value="<? echo $_POST['nombre'];?>" />
	</div>
    
	<div> 
		<label>* Correo-e:</label>
		<input class="textBox" type="text" name="email"  value="<? echo $_POST['email'];?>" />
	</div>
	
	<div> 
		<label>* Comentario:</label>
		<textarea class="textBox" name="comentario"><? echo $_POST['comentario'];?></textarea>
		<p class="smallNote">* Espacio requerido</p>
	</div>
	
	<?if (strtoupper($imgcode) == "YES") {?>
		<div class="verificationCode">
			<h5>Verificaci&oacute;n:</h5>
			<p class="verificationCode">Introduc&iacute; el siguiente c&oacute;digo:</p>
			<div class="captchaBox">
				<img class="captcha" src="guestbook/image.php?<?=time()?>" alt="captcha" /> 
				<input class="captcha" type="text" name="vsecc" />
			</div>
		</div>
	<?}?>
	
	<div class="formbutton">
		<input class="formbutton" type="submit" name="enviar" value="Enviar" />
		<input class="formbutton" type="reset" value="Reset" />
	</div>
</form>

<?
	// Captcha
	session_start();
	$_SESSION['secc'] = strtoupper(substr(sha1(time().$admin_email),0,4));
	
	if ($vsecc != $_SESSION['secc'] && strtoupper($imgcode) == "YES") {
		$flag='err';
		$mensaje='<div class="errorContForm"><p>C&oacute;digo de verificaci&oacute;n inv&aacute;lido,</p></div>';
	} else {
		$captchaOk=$_POST['vsecc'];
	}
}
?>
Logré hacer que el captcha se "refrescara" al actualizar la página, pero aunque uno no escriba el captcha correctamente (incluso si se deja en blanco) el mensaje se envía! creo que el problema se halla en el comienzo, al momento del
Código:
if (isset ($_POST['enviar'])) {...
pero no sé que hacer ya que no sé casi nada de PHP, y me gustaría solucionar eso pronto...

Acá está el link del formulario: [URL="http://www.tradsession.com/contact.php"]http://www.tradsession.com/contact.php[/URL]

Gracias por su ayuda gente! saludos de Costa Rica!