Yo he cogido el código que tienes en las FAQ's y he realizado alguna que otra variación. Por ejemplo al fichero donde se encuentra la función para generar la contraseña lo he llamado de otra manera: code_genera.php pero el contenido es el mismo:
code_genera.php
Código PHP:
<?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);
}
?>
En el archivo donde genero la imagen he puesto esto:
Código PHP:
<?php
session_start();
require("class/smarty/Smarty.class.php");
include_once("language/lang-spanish.php");
include_once('class/DB.php');
include ("code_genera.php");
/* Making code for SECURITY CODE and store it into a SESSION */
$securitycode = genera_password(10);
$_SESSION['securitycode'] = $securitycode;
$template->assign("SECURITYCODE","<img src=\"securitycode.php\">");
y mi archivo securitycode.php contiene este código:
Código PHP:
<?php
session_start();
$codigo = $_GET['securitycode'];
//$codigo = $_SESSION['securitycode'];
$tipografias = array("font1","font2","font3","font4","font5","font6","font7","font8");
$tipografias_ruta = "D:/WWW/jclub/tipografia/";
$espacio = 0;
$tamano_fuente = 14;
$profundidad_codigo = 8;
$x = $profundidad_codigo*$tamano_fuente;
$y = $tamano_fuente;
$im = imagecreate($x, $y);
$color_fondo = imagecolorallocate($im, 255, 255, 255); // Blanco
$color_texto = imagecolorallocate($im, 0, 0, 0); // Negro
for($caracter=0; $caracter<$profundidad_codigo; $caracter++){
$indice_aleatorio=array_rand($tipografias);
$tipografia=$tipografias_ruta.$tipografias[$indice_aleatorio].'.ttf';
imagettftext($im, $tamano_fuente, 0, $espacio, $tamano_fuente, $color_texto, $tipografia , $codigo{$caracter});
$espacio +=$tamano_fuente;
}
header('Content-type: image/png');
imagepng($im);
imagedestroy($im);
?>
ahora cuando lo llamo normalmente no pone nada. Y si lo llamo de esta forma:
Código PHP:
http://localhost/jclub/securitycode.php?securitycode=123455
me da este error:
Cita: Notice: Uninitialized string offset: 6 in D:\WWW\jclub\securitycode.php on line 18
Notice: Uninitialized string offset: 7 in D:\WWW\jclub\securitycode.php on line 18
Warning: Cannot modify header information - headers already sent by (output started at D:\WWW\jclub\securitycode.php:18) in D:\WWW\jclub\securitycode.php on line 21
‰PNG IHDRpæ…ÉPLTEÿÿÿßßߟŸŸ___???¿¿¿<ž>Ý IDATxœ•’;oÂ@ Ç}—Œ8 1â1RX)c«6c¤ªíšVUçR•ïÍÙj ‡þ–ü|öùÄ|Ä®´+"VÇ_œ £“äŸ*HšLëY]qp4J,`›Ä n±UÏz%€+ :.ZU¨þƒnE`°¼:î2j7 ƒÚª3º[ÀBÜ–Á|WRðSàV#C¨.L,hqïøÍŽuFýyC!±€/â2$õšÒÁ°+E±Cgåý¹a€ÏäE.Uhƒz*i¹zæ´m*rR›_CYÕÏç üØC9*? Ò®#®ðÆÉ)Ó&);Šl ¿œ.‘†,ä*k ;X[•·úøJÃm8j¦0¥ ‹Ójä. ùÄ bIEND®B`‚
QUe estoy haciendo mal?
Salu2