Ver Mensaje Individual
  #13 (permalink)  
Antiguo 23/09/2006, 05:56
Avatar de shakaran
shakaran
 
Fecha de Ingreso: agosto-2005
Ubicación: España - Ciudad Real
Mensajes: 374
Antigüedad: 18 años, 8 meses
Puntos: 7
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&aacute;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&oacute;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&oacute;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.
__________________
Quijost Backend Engineer - www.quijost.com - Hosting rápido, eficiente y profesional
Blog: www.shakaran.net