Ver Mensaje Individual
  #1 (permalink)  
Antiguo 06/11/2013, 04:53
sxwark
 
Fecha de Ingreso: agosto-2013
Ubicación: Oyón/Alava
Mensajes: 23
Antigüedad: 10 años, 9 meses
Puntos: 0
Problemilla al crear un captcha con php

Buenas a todos antes de nada dar las gracias a quien me pueda ayudar.


He creado un captcha con el siguiente código.

Código:
session_start();
function randomText($length) {
    $pattern = "1234567890abcdefghijklmnopqrstuvwxyz";
    for($i=0;$i<$length;$i++) {
      $key .= $pattern{rand(0,35)};
    }
    return $key;
}
 
$_SESSION['tmptxt'] = randomText(8);

// Imagen que va a mostrar de fondo
$fondo = "../themes/image/captcha.png"; 
 
// Se define el header
header("Content-type: image/png");
 
// Creando el fondo con la imagen
$imagen = imagecreatefrompng("$fondo");
 
// Color del texto (R,G,B)
$color = imagecolorallocate($imagen,100,60,255);
 
// Texto que se va a mostrar
$texto1 = $_SESSION['tmptxt'];
 
imagestring($imagen,50,80,30,$texto1,$color);
 
// Salida de la imagen
imagepng($imagen);
Guardo el resultado de la función en la variable de sesión de $_SESSION['tmptxt']


Hasta aquí todo bien.


El problema viene en el momento que abro otra sesión en el formulario de registro.

Este es el código del formulario

Código:
<form method="post" action="#">
			<p class="RegisterFormUserInput" id="registerPuser">
				<label>Nombre de usuario</label>
				<br>
				<input type="text" name="username" id="RegisterUsername" required>
			</p>
			<p class="RegisterFormUserInput" id="registerPmail">
				<label>Corréo electrónico</label>
				<br>
				<input type="email" name="email" id="RegisterMail" required>
			</p>
			<p class="RegisterFormUserInput" id="registerPpasswd1">
				<label>Contraseña</label>
				<br>
				<input type="password" name="passwd1" id="RegisterPasswd1" required>
			</p>
			<p class="RegisterFormUserInput" id="registerPpasswd2">
				<label>Repita la contraseña</label>
				<br>
				<input type="password" name="passwd2" id="RegisterPasswd2" required>
			</p>
			<p id="RegisterimgCaptcha">
				<img src="users/captcha.php" id="RegisterCaptcha" alt="Captcha">
			</p>
			<p class="RegisterFormUserInput" id="registerPcaptcha">
				<label>Escriba lo que pone en la imágen</label>
				<br>
				<input type="text" name="captchaValue" id="RegistercaptchaValue" required>
			</p>
			<p id="registerPcondition">
				<input type="checkbox" name="conditions" id="RegisterConditions">
				<span>Acepto los términos y condiciones de uso. <a href="#">Leer términos y condiciones</a></span>
			</p>
			<p id="regiterPsubmit">
				<input type="submit" value="Crear cuenta" id="RegisterSubmit">
			</p>
		</form>
	</div>

	<div id="RegisterPoptions">
		<p>Si tienes cuenta pero has olvidado tu contraseña pincha <a href="">aquí...</a></p>
		<p><a href="">Volver a workdyant</a></p>
	</div>

	<?
	session_start();

	echo $_SESSION['tmptxt'];
	?>
El problema es que el código que aparece insertado en la imagen de captcha no coincide con la variable $_SESSION['tmptxt']

El resultado de la variable muestra el código anterior al usado en la imagen.

Parece como desfasado.

Os dejo un enlace en el cual se ve el código de captcha en la imagen del formulario y un echo de la variable en la esquina inferior izquierda

http://workdyant.hol.es/sign-up/

No me deja poner el link :(


Otra vez gracias al que me pueda atender.

Última edición por sxwark; 06/11/2013 a las 04:56 Razón: No me dejaba poner un link