Foros del Web » Programando para Internet » PHP »

Captcha sin funcionar...

Estas en el tema de Captcha sin funcionar... en el foro de PHP en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 17/09/2011, 22:35
Avatar de NRamirezCR  
Fecha de Ingreso: septiembre-2011
Ubicación: San José, Costa Rica
Mensajes: 4
Antigüedad: 13 años, 2 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!
  #2 (permalink)  
Antiguo 17/09/2011, 22:52
Avatar de Sourcegeek
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: $mex['B.C.'];
Mensajes: 1.816
Antigüedad: 15 años, 6 meses
Puntos: 322
Respuesta: Captcha sin funcionar...

Código PHP:
Ver original
  1. $captchaOk=$_POST['vsecc'];

Antes de enviar el email, debes comprobar la existencia de esa variable, ya que si te fijas bien, sólo se declara cuando el captcha introducido es correcto
__________________
Buscas desarrollador web? Sourcegeek. Diseño web, Maquetación y Programación
¡Escribe bien! Esto es un foro, no un Facebook para que escribas con los pies
  #3 (permalink)  
Antiguo 17/09/2011, 22:55
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 15 años, 2 meses
Puntos: 214
Respuesta: Captcha sin funcionar...


<saludos>
Según veo en el código el campo del captcha se llama vsecc,
entonces en el if donde preguntas por enviar pregunta también por
vsecc tanto con isset como con diferente de vacio o con un size
mínimo que definas para dicho campo, suerte con eso.
</saludos>
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #4 (permalink)  
Antiguo 18/09/2011, 14:39
Avatar de NRamirezCR  
Fecha de Ingreso: septiembre-2011
Ubicación: San José, Costa Rica
Mensajes: 4
Antigüedad: 13 años, 2 meses
Puntos: 0
Respuesta: Captcha sin funcionar...

Gracias, parecen saber bastante sobre eso... podrían ser más específicos? :P ya sé que estoy pidiendo mucho, pero recuerden que no sé nada de PHP! lo que pasa es que soy muy animado y me pongo a inventar código que a veces funciona, a veces no... Voy a intentarlo con sus sugerencias, pero en todo caso, qué código debería escribir exactamente según sus conocimientos? gracias!
  #5 (permalink)  
Antiguo 18/09/2011, 14:41
Avatar de NRamirezCR  
Fecha de Ingreso: septiembre-2011
Ubicación: San José, Costa Rica
Mensajes: 4
Antigüedad: 13 años, 2 meses
Puntos: 0
Respuesta: Captcha sin funcionar...

Cita:
Iniciado por Sourcegeek Ver Mensaje
Código PHP:
Ver original
  1. $captchaOk=$_POST['vsecc'];

Antes de enviar el email, debes comprobar la existencia de esa variable, ya que si te fijas bien, sólo se declara cuando el captcha introducido es correcto
Por cierto, completamente lógico! pero sigo sin entender qué hacer... ayer pasé todo el día jugando con el bendito formulario, y lo que alcancé fue lo que pueden ver en la página...
  #6 (permalink)  
Antiguo 18/09/2011, 15:14
Avatar de Sourcegeek
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: $mex['B.C.'];
Mensajes: 1.816
Antigüedad: 15 años, 6 meses
Puntos: 322
Respuesta: Captcha sin funcionar...

Cita:
pero sigo sin entender qué hacer
Bueno, en este caso, comenzar a leer sobre condicionales e isset
__________________
Buscas desarrollador web? Sourcegeek. Diseño web, Maquetación y Programación
¡Escribe bien! Esto es un foro, no un Facebook para que escribas con los pies
  #7 (permalink)  
Antiguo 19/09/2011, 18:32
Avatar de NRamirezCR  
Fecha de Ingreso: septiembre-2011
Ubicación: San José, Costa Rica
Mensajes: 4
Antigüedad: 13 años, 2 meses
Puntos: 0
Pregunta Respuesta: Captcha sin funcionar...

Bueno! ya he avanzado bastante! aunque sigo sin entender bastante de PHP. tanto travesear el código me ha ayudado para familiarizarme un poquito con esta vaina...

Ahora tengo otro problema... Por lo visto el código que genera el captcha no lo está interpretando bien el condicional, pero es extraño, porque reemplacé la variable por un valor específico y si lo reconoce!

En otras palabras:

Código:
session_start();
// Trabaja perfectamente y el formulario se envía
$_SESSION['secc'] = "HOLA";


// No trabaja, aunque se muestra la imagen con un valor al azar y se digite correctamente
// $_SESSION['secc'] = strtoupper(substr(sha1(time().$admin_email),0,4));


// La condicional trabaja bien con "HOLA" pero no con el valor al azar :S
if ($captcha != $_SESSION['secc']) {
		$flag='err';
		$mensaje='<div class="errorContForm"><p>C&oacute;digo de verificaci&oacute;n inv&aacute;lido.</p></div>';
	} else {
		// bla bla bla bla
	}
}
Alguien sabe qué sucede?

Etiquetas: captcha, issue
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 01:55.