Buen dia a todos.
Tengo un captcha que funciona muy bien en IE y Chrome pero...
NO FUNCIONA en Firefox...
¿Alguien puede darme un tip?
Dejo los codigos.
login.php
Código HTML:
<?php
session_start();
?>
<html>
<head> </head>
<body>
<form name="Form1" method="post" action="cerradura.php" id="Form1" onsubmit="return ValidateForm1(this)">
Usuario: <input type="text" id="Editbox1" name="usuario" value="" maxlength="12" tabindex="10">
Password: <input type="password" id="Editbox2" name="password" value="" maxlength="12" tabindex="20">
Captcha: <div id="wb_Captcha1">
<img src="captcha1.php" id="Captcha1Imagen" alt="Click para generar nuevos caracteres" title="Click para generar nuevos caracteres" style="cursor:pointer;width:100px;height:38px;" onclick="this.src='captcha1.php?'+Math.random()">
<input type="text" id="Captcha1Edit" name="captcha_code" value="" tabindex="30" onkeyup="this.value=this.value.toUpperCase()">
</div>
<div id="wb_ImageCaptcha" style="overflow:hidden;position:absolute;left:58px;top:145px" align="left">
<a onclick=" document.getElementById('Captcha1Imagen').src = document.getElementById('Captcha1Imagen').src + '?' + (new Date()).getMilliseconds()" href="#A">
<img src="images/img0052.png" id="Text4" alt="" border="0"
style="width:138px;height:32px;border:0px #000000 solid;">
</div>
<input type="submit" id="Button1" name="" value="Login" tabindex="40">
</form>
</body>
</html>
captcha1.php
Código PHP:
$ancho=90;
$alto=25;
$imagen=imageCreate($ancho,$alto);
$gris=ImageColorAllocate($imagen,180,180,180);
ImageFill($imagen,0,0,$gris);
$azul=ImageColorAllocate($imagen,50,50,255);
$amarillo = ImageColorAllocate($imagen,225,225,0);
$verde = ImageColorAllocate($imagen,50,255,50);
$rosa = ImageColorAllocate($imagen,255,190,255);
for($c=1;$c<=10;$c++)
{
$x1=rand(0,$ancho);
$y1=rand(0,$alto);
$x2=rand(0,$ancho);
$y2=rand(0,$alto);
ImageLine($imagen,$x1,$y1,$x2,$y2,$amarillo);
$x1=rand(0,$ancho);
$y1=rand(0,$alto);
$x2=rand(0,$ancho);
$y2=rand(0,$alto);
ImageLine($imagen,$x1,$y1,$x2,$y2,$verde);
$x1=rand(0,$ancho);
$y1=rand(0,$alto);
$x2=rand(0,$ancho);
$y2=rand(0,$alto);
ImageLine($imagen,$x1,$y1,$x2,$y2,$rosa);
}
$valoraleatorio = "";
$chars = 'ABCDEFGHKMNPQRTUVWXYZ2346789';
for ($i=1; $i<=5; $i++) // generara 5 caracteres
{
$valoraleatorio .= $chars[mt_rand(0, strlen($chars)-1)];
}
session_start();
$_SESSION['numeroaleatorio']=$valoraleatorio;
ImageString($imagen,5,25,5,$valoraleatorio,$azul);
Header ("Content-type: image/jpeg");
ImageJPEG ($imagen);
ImageDestroy($imagen);
cerradura.php
Código PHP:
session_start();
$captcha = $_SESSION['numeroaleatorio'];
/***VARIABLES POR POST ***/
$numeroPost = count($_POST);
$tagsPost = array_keys($_POST); // obtiene los nombres de las varibles
$valoresPost = array_values($_POST);// obtiene los valores de las varibles
// crea las variables y les asigna el valor
for($i=0;$i<$numeroPost;$i++){
$$tagsPost[$i]=$valoresPost[$i];
}
/*
ahora solo hay que llamar las variables por su nombre
en vez de usar $_POST['usuario'] y $_POST['password'], llamar a las variables
$usuario
$password
$captcha_code
*/
if ($captcha != $captcha_code) //comparar el captcha tecleado por el usuario vs el generado automaticamente
{ // OJO: SIEMPRE PASA POR ESTE IF (SOLO EN FIREFOX), Y POR LO TANTO
// LO REGRESA A login.php
$_SESSION['permisoCerradura']=0;
$_SESSION['errorLogin']=4;
header ("Location: login.php");
}
else // NUNCA PASA POR ESTE ELSE EN FIREFOX, PERO SI EN IE Y EN CHROME
{
header ("Location: menu.php");
}
La verdad estoy DESCONCERTADO porque sólo ocurre en Firefox. ¿Alguien tiene alguna idea de lo que pueda estar pasando?
Gracias de antemano y excelente Karma para ti.