(usa el botón PHP para poner código saldrá coloreado .. de todas formas el link del mensaje original con el código ya estaba ..)
Básicamente .. como ya te dije . .debes en principio separar ambas funciones .. la que genera el código y la que hace la rutina para generar el grafico a partir de esa cadena ..
Sería algo tipo:
funciones.php Código PHP:
<?
function genera_password($longitud,$tipo="alfanumerico"){
if ($tipo=="alfanumerico"){
$exp_reg="[^A-Z0-9]";
} elseif ($tipo=="numerico"){
$exp_reg="[^0-9]";
}
return substr(eregi_replace($exp_reg, "", md5(time())) .
eregi_replace($exp_reg, "", md5(time())) .
eregi_replace($exp_reg, "", md5(time())),
0, $longitud);
}
?>
formulario.php
<?
// inicio uso sesiones.
session_start();
// aquí metes tu función genera_password
include ("funciones.php");
// llamas a la función para generar un password.
$pass=genera_password(10);
// lo dejamos en una variable de sesión para poderlo leer de forma segura en otro proceso.php ...
$_SESSION['mipass']=$pass;
?>
<html>
</head>
</head>
<body>
<!-- .. etc y tu formulario con -->
<form action="procesa.php" method="POST">
<!-- la imagen generada con nuestro password ... -->
<img src="genera_password.php?pass=<? echo $pass ?>">
<input type="text" name="pass">
etc... campos y botón enviar ...
</form>
</body>
</html>
genera_password.php Código PHP:
<?
//recogemos el "texto" por el URL que enviamos a generar desde el link de imagen del HTML de nuestro formulario ...
$codigo=$_GET['pass'];
// Configuración.
// Nombres tipografías a usar (sin extensión .ttf)
$tipografias = array("arial","comic","times");
// Directorio donde estén las fuentes .. (ruta absoluta)
// (importante el último /o según corresponda.
// (Las fuentes son True Type (.ttf)
$tipografias_ruta = "C:WINDOWSFONTS\"; // Windows.
// $tipografias_ruta="/home/sito/public_html/fonts/"; // Linux (*NIX)
// Inicializa eje X desde donde se empezará a
// "dibujar" el código. (referente al tamaño de la "caja")
$espacio = 0;
// Tamaño fuente.
$tamano_fuente = 15;
// Profundidad caracteres/digitos del código a generar (password).
$profundidad_codigo = 8; // (alfanuméricos)
// Rutina ...
// Cálculo Ancho automático de la "caja"
$x=$profundidad_codigo*$tamano_fuente;
$y=$tamano_fuente;
// Iniciar la generación de la imagen. Se define una "caja" de $x por $y pixels.
$im = imagecreate ($x, $y);
// Definición Colores. Expresados en valores R G B (respectivamente).
$color_fondo = imagecolorallocate ($im, 255, 255, 255); // Blanco
$color_texto = imagecolorallocate ($im, 0, 0, 0); // Negro
for ($caracter=0; $caracter<=$profundidad_codigo; $caracter++){
// Seleccion de una tipografía aleatoria.
$indice_aleatorio=array_rand($tipografias);
$tipografia=$tipografias_ruta.$tipografias[$indice_aleatorio].".ttf";
// Generar el caracter gráfico.
ImageTTFText ($im, $tamano_fuente, 0, $espacio, $tamano_fuente, $color_texto, $tipografia , $codigo{$caracter});
// Separación entre caracteres
$espacio +=$tamano_fuente;
}
// Cabecera HTTP. Indica al navegador que la imagen que estamos generando es .PNG
header("Content-type: image/png");
// Generar Imagen (un .png Dinámico.)
imagepng ($im);
// Destruir imagen (de memoria .. va a ser enviada directamente al navegador).
imagedestroy ($im);
?>
procesa.php Código PHP:
<?
// inicio sesiones
session_start();
if ($_SESSION['mipass'] == $_POST['pass']){
echo "código/contraseña aceptado .. coincide ...";
} else {
echo "Pues el código/contraseña NO coincide ...";
}
// Y nos deshacemos de la sesión ...
unset($_SESSION);
session_destroy();
?>
Un saludo,
PD: no lo he probado .. así que igual no funciona .. pero por ahí va la cosa.