Primero aclaro que no tengo mucha experiencia programando en php, así que tal vez mi duda será muy basica... y por lo mismo agradezo ENORMEMENTE su ayuda.
Tengo un programa que en su login require captcha. El codigo php para generar captcha es un archivo llamado captcha1.php cuyo codigo es el siguiente:
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 = 'ABCDEFGHKMNPQRTWXYZ2346789';
for ($i=1; $i<=5; $i++) // generara 5 caracteres
{
$valoraleatorio .= $chars[mt_rand(0, strlen($chars)-1)];
}
//$valoraleatorio=rand(100000,999999);
session_start();
$_SESSION['numeroaleatorio']=$valoraleatorio;
ImageString($imagen,5,25,5,$valoraleatorio,$azul);
Header ("Content-type: image/jpeg");
ImageJPEG ($imagen);
ImageDestroy($imagen);
Código HTML:
<form name="Form1" method="post" action="cerradura.php" id="Form1" onsubmit="return ValidateForm1(this)"> Usuario:<input type="text" id="Editbox1" style="position:absolute;left:183px;top:45px;width:98px;height:18px;line-height:18px;z-index:0;" name="usuario" value="" maxlength="12" tabindex="10"> Password:<input type="password" id="Editbox2" style="position:absolute;left:183px;top:70px;width:98px;height:18px;line-height:18px;z-index:1;" name="password" value="" maxlength="12" tabindex="20"> <div id="wb_Captcha1" style="position:absolute;left:77px;top:107px;width:204px;height:36px;z-index:3;padding:0;"> <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" style="position:absolute;left:105px;top:16px;width:104px;height:20px;line-height:20px;;" name="captcha_code" value="" tabindex="30" onkeyup="this.value=this.value.toUpperCase()"></div> <input type="submit" id="Button1" name="" value="Login" style="position:absolute;left:187px;top:176px;width:96px;height:25px;z-index:6;" tabindex="40"> <div id="wb_Text5" style="position:absolute;left:12px;top:210px;width:412px;height:16px;text-align:center;z-index:8;"> <span style="color:#FF0000;font-family:Arial;font-size:13px;"><?php echo $mensaje; ?></span> </div> </form>
Código PHP:
session_start();
$captcha = $_SESSION['numeroaleatorio'];
include("parametros.php");
/***RECUPERAR 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
ejemplo:
$usuario
$password
$captcha_code
*/
// DESDE LA BBDD VERIFICO usuario y pasword, y son correctos, y verifico el captcha de esta manera
if (strlen($usuario) < 8 or strlen($usuario) > 12 or $usuario == "")
{
$_SESSION['permisoCerradura']=0;
$_SESSION['errorLogin']=1;
header("Location: login.php");
}
elseif (strlen($password) < 8 or strlen($password) > 12 or $password == "")
{
$_SESSION['permisoCerradura']=0;
$_SESSION['errorLogin']=2;
header("Location: login.php");
}
elseif (strlen($captcha_code) != 5 or $captcha_code == "")
{
$_SESSION['permisoCerradura']=0;
$_SESSION['errorLogin']=3;
header("Location: login.php");
}
elseif ($captcha != $captcha_code) // comparar el captcha tecleado por el usuario vs el generado automaticamente... AQUI ES DONDE NO REACCIONA EL EXPLORER
{
$_SESSION['permisoCerradura']=0;
$_SESSION['errorLogin']=4;
header ("Location: login.php");
}
elseif ($usuarioBD == "") //comparar el password tecleado por el usuario vs la contraseña de la bbdd
{
$_SESSION['permisoCerradura']=0;
$_SESSION['errorLogin']=5;
header ("Location: login.php");
}
elseif ($passwordBD == "" ) //comparar el password tecleado por el usuario vs la contraseña de la bbdd
{
$_SESSION['permisoCerradura']=0;
$_SESSION['errorLogin']=6;
header ("Location: login.php");
}
elseif ($password != $passwordBD) //comparar el password tecleado por el usuario vs la contraseña de la bbdd
{
$_SESSION['permisoCerradura']=0;
$_SESSION['errorLogin']=7;
header ("Location: login.php");
}
else
{
$_SESSION['permisoCerradura']=1;
$_SESSION['abonado']=$usuarioBD;
$_SESSION['idAbonado']=$idAbonado;
header ("Location: menu.php");
}
GRACIAS!!!!