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>
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);
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");
}
Gracias de antemano y excelente Karma para ti.