Ver Mensaje Individual
  #6 (permalink)  
Antiguo 20/02/2004, 12:54
Cluster
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 11 meses
Puntos: 129
(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-typeimage/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.
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.