Bueno, expongo todo el codigo no tengo problema en ello, es mas, me gusta exponer el codigo que hago (siempre que no afecte a temas de seguridad) como otros programadores lo hacen ya que aprendemos mucho unos de otros.
Código PHP:
<?
$login_name="apologin";// Usamos la sesion de nombre definido.
session_name($login_name);// Iniciamos el uso de sesiones
session_start();
$_SESSION['cokkNick']="prueba";
$_SESSION['cokkPass']="imaginaros un password aqui";
$_SESSION['USER_ID']="imaginaros una id de usuario aqui";
function crear_captcha()
{
$caracterf="";//Inicializamos la variable de sesion
$lista_cararacteres="ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890";
$ncaracter = strlen($lista_cararacteres);//Numero de caracteres
for($i=1;$i<= 3;$i++)
{//Generamos 3 caracteres aleatorios
$k=mt_rand(0,$ncaracter-1);//Indice de caracteres
$caracterf.=$lista_cararacteres[$k];
}
echo "Caracter generado: $caracterf<br>";
$_SESSION["captcha_bug"]=$caracterf;
echo "Caracter en la session: ".$_SESSION["captcha_bug"]."<br>";
}
if(!isset($enviar))
{
crear_captcha();
?>
<form action="apo_bugtracker.php" method="post">
<table border="0" cellspacing="0" cellpadding="0" align="center">
<tr>
<td width="17" height="7" background="images/tablas/up_left.gif">
<td height="7" colspan="3" background="images/tablas/up.gif"></td>
<td width="7" height="7" background="images/tablas/up_right.gif"> </tr>
<tr>
<td width="17" background="images/tablas/left.gif">
<td colspan="3" class="f1"><div style="text-indent:20px" align="justify">El BugTracker es un sistema ideado para que los usuarios de Apogeus, puedan informar de bugs (fallos), sugerir nuevas ideas, modificar algo ya propuesto o alertar de una posible inseguridad del sistema.
De esta forma ganamos todos, ya que todos los asuntos están centralizados. Asi programadores y guionistas estamos siempre bien informados de las tareas pendientes.<br>
<br></div>
<div style="text-indent:20px" align="justify">Si has descubierto un bug o quieres aportar una nueva sugerencia, idea o modificación, por favor rellena el formulario siguiente: </div> </td>
<td width="7" background="images/tablas/right.gif"> </tr>
<?
if(ser_user($cokkNick,$cokkPass))
{
$usuario=$cokkNick;
$email=idtomail($USER_ID);
?>
<tr>
<td width="17" background="images/tablas/left.gif">
<td width="100" class="f1">Usuario:</td>
<td colspan="2" class="f2"><? echo $usuario;?></td>
<td background="images/tablas/right.gif"> </tr>
<tr>
<td width="17" background="images/tablas/left.gif">
<td width="100" class="f1">Email:</td>
<td colspan="2" class="f2"><? echo $email;?></td>
<td background="images/tablas/right.gif"> </tr>
<?
}
else
{//Si es un usuario anonimo
?>
<tr>
<td width="17" background="images/tablas/left.gif">
<td width="100" class="f1">Usuario:</td>
<td colspan="2" class="f2"><input type="text" class="c" name="usuario" size="20" maxlength="20"></td>
<td background="images/tablas/right.gif"> </tr>
<tr>
<td width="17" background="images/tablas/left.gif">
<td width="100" class="f1">Email:</td>
<td colspan="2" class="f2"><input type="text" class="c" name="email" size="40" maxlength="40"></td>
<td background="images/tablas/right.gif"> </tr>
<?
}
?>
<tr>
<td width="17" background="images/tablas/left.gif">
<td width="100" class="f1">Asunto:</td>
<td colspan="2" class="f2"><input type="text" class="c" name="asunto" size="80" maxlength="255"></td>
<td background="images/tablas/right.gif"> </tr>
<tr>
<td width="17" background="images/tablas/left.gif">
<td class="f1" style="vertical-align:top;">Descripción:</td>
<td colspan="2" class="f2"><textarea class="carea" rows="10" cols="90" name="descripcion"></textarea></td>
<td background="images/tablas/right.gif"> </tr>
<tr>
<td background="images/tablas/left.gif">
<td class="f1"><div align="center">Codigo:</div> </td>
<td width="126" class="f2"><div style="background-image:url(tabla_captcha.png);width:113px;height:49px;">
<div style="position:relative;left:11px;width:90px;height:30px; top:10px;">
<div align="center"><img src="apo_img_captcha.php?<?php echo SID; ?>" width="90" height="30" border="0"> </div>
</div>
</div></td>
<td width="658" class="f2"><input name="captcha_ingresado" class="c"type="text" id="captcha_ingresado" size="7" maxlength="3" />
<a href="#" onclick="Popup()"><img style="vertical-align:middle"src="images/help.gif" border="0" /></a></td>
<td background="images/tablas/right.gif"> </tr>
<tr>
<td background="images/tablas/left.gif">
<td colspan="3" class="f1" style="vertical-align:top;"><div align="center">
<input type="submit" name="enviar" class="b" value="Enviar">
</div></td>
<td background="images/tablas/right.gif"> </tr>
<tr>
<td width="17" height="7" background="images/tablas/down_left.gif">
<td height="7" colspan="3" background="images/tablas/down.gif"></td>
<td width="7" height="7" background="images/tablas/down_right.gif"> </tr>
</table>
</form>
<?
}
else
{
echo "INGRESADO=$captcha_ingresado<br>";
echo "CARACTER Sesion=".$_SESSION["captcha_bug"]."<br>";;
if($captcha_ingresado==$captcha_bug)
{
echo "Usted ingreso el codigo correctamente.<br>";
}
else
{
echo "El texto ingresado no coincide. Por favor intentelo de nuevo!<br>";
}
}
Bueno, ya esta todo el codigo, como veis no es nada del otro mundo.
Entonces cual es el problema de que "algunas" veces no funcione bien mi captcha? Si haceis la prueba, metiendo bien el codigo unas 4 veces(para ver que sale distinto a los echo) y igual metiendolo mal, vereis a lo que me refiero.