Ver Mensaje Individual
  #3 (permalink)  
Antiguo 26/05/2007, 21:27
jromes
 
Fecha de Ingreso: enero-2006
Mensajes: 15
Antigüedad: 18 años, 3 meses
Puntos: 0
Re: Implementar captcha en formulario

Hola usermax,

Estos son los códigos:

crear_imagen.php
<?

$captcha_imagen = imagecreate(150,40);

$color_negro = imagecolorallocate ($captcha_imagen, 0, 0, 0);
$color_blanco = imagecolorallocate ($captcha_imagen, 255, 255, 255);

imagefill($captcha_imagen, 0, 0, $color_negro);

session_start();
$captcha_texto = $HTTP_SESSION_VARS["captcha_texto_session"];

imagechar($captcha_imagen, 4, 20, 13, $captcha_texto[0] ,$color_blanco);
imagechar($captcha_imagen, 5, 40, 13, $captcha_texto[1] ,$color_blanco);
imagechar($captcha_imagen, 3, 60, 13, $captcha_texto[2] ,$color_blanco);
imagechar($captcha_imagen, 4, 80, 13, $captcha_texto[3] ,$color_blanco);
imagechar($captcha_imagen, 5, 100, 13, $captcha_texto[4] ,$color_blanco);
imagechar($captcha_imagen, 3, 120, 13, $captcha_texto[5] ,$color_blanco);

header("Content-type: image/jpeg");
imagejpeg($captcha_imagen);

?>


formulario.php
<?
session_start();

$captcha_texto = "";

for ($i = 1; $i <= 6; $i++) {
$captcha_texto .= caracter_aleatorio();
}

$HTTP_SESSION_VARS["captcha_texto_session"] = $captcha_texto;

function caracter_aleatorio() {

mt_srand((double)microtime()*1000000);

$valor_aleatorio = mt_rand(1,3);

switch ($valor_aleatorio) {
case 1:
$valor_aleatorio = mt_rand(97, 122);
break;
case 2:
$valor_aleatorio = mt_rand(48, 57);
break;
case 3:
$valor_aleatorio = mt_rand(65, 90);
break;
}

return chr($valor_aleatorio);
}

?>
<head>
<title>Captcha: Formularios mas seguros.</title>
</head>

<body style="font-family: Verdana, Arial, Helvetica, sans-serif ; font-size: 12px">
<p>Captcha: Formularios mas seguros.</p>
<hr size="1" noshade="noshade" />
<p>Por favor ingrese el codigo que ve en la imagen, sino puede leerlo actualize la pagina.</p>
<p align="center"><img src="crear_imagen.php?<?php echo SID; ?>" /></p>
<form action="verificar.php" method="POST">
<p>Ingrese el codigo:
<input name="texto_ingresado" type="text" id="texto_ingresado" size="30" />
<input type="submit" name="Submit" value="OK" />
</p>
</form>
<p
><b>Nota:</b> El codigo es sensible a las mayuculas y minisculas</p>
</body>
</html>


verificar.php
<?

session_start();

$texto_ingresado = $HTTP_POST_VARS["texto_ingresado"];
$captcha_texto = $HTTP_SESSION_VARS["captcha_texto_session"];

if ($texto_ingresado == $captcha_texto) {
echo "Usted ingreso el codigo correctamente.";
} else {
echo "El texto ingresado no coincide. Por favor intentelo de nuevo!";
}

session_unset();
session_destroy();

?>


Lo estoy probando en una Web diferente, en kikoblog . com, pero como he dicho antes no consigo hacerlo funcionar conjuntamente.

Lo que dices tienes razón, los datos en mi formulario se borran cuando hay alguno sin rellenar, no se como cambiar esto ya que me lo entregaron así.

Si necesitas cualquier otro dato, puedo enviarlo.

Gracias,
Saludos