PHP - poner imagenes aleatorias de fondo a un captcha

   
Vista:

poner imagenes aleatorias de fondo a un captcha

Publicado por Sam (138 intervenciones) el 09/04/2015 18:51:09
Hola amigos, a ver si me pueden ayudar con esto:

Tengo un codigo que me genera captchas de manera aleatoria, y lo hace bien, pero solo me cambian las letras y numeros pero siempre con el mismo fondo.

Agradeceria si me pudieran ayudar a como hacer para que la imagen de fondo de dichos captchas tambien fuesen aleatorias.

Y una cuestion mas, ¿esta bien poner al final de este codigo "imagedestroy($imagen);"?

Gracias de antemano.

Miren este es el codigo que tengo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
header('Content-Type: image/png');
 
 
//$array_aleatorio = array("fondo_captcha_1.png", "fondo_captcha_2.png");
//$img_aleatoria = array_rand($array_aleatorio, 2);
 
//$imagen = @imagecreatefrompng("../../imgs/".$img_aleatoria);
 
 
$imagen = @imagecreatefrompng("../../imgs/fondo_captcha_1.png");
 
 
 
$color_fondo = imagecolorallocate($imagen, 255, 255, 255);
$color_letras = imagecolorallocate($imagen, 0, 0, 0);
 
 
function generate_captcha($letras, $length)
{
    $texto = null;
 
    for ($x=0; $x<$length; $x++)
    {
        $rand = rand(0, count($letras)-1);
        $texto .= $letras[$rand];
    }
 
    return $texto;
}
 
$texto = generate_captcha(array(
 
0,1,2,3,4,5,6,7,8,9,
'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z',
//'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'
), 5);
 
 
setcookie('cookie_captcha', sha1($texto), time()+60*3);
 
$fuente = '../../fonts/ChopinScript.ttf';
 
imagettftext($imagen, 40, 0, 30, 39, imagecolorallocate($imagen, 0, 0, 0), $fuente, $texto);
 
 
imagepng($imagen);
imagedestroy($imagen);
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve

poner imagenes aleatorias de fondo a un captcha

Publicado por xve (5513 intervenciones) el 09/04/2015 21:15:50
Hola Sam, lo que tendrias que hacer, es aleatoriamente cambiar la imagen de esta linea:

1
$imagen = @imagecreatefrompng("../../imgs/fondo_captcha_1.png");

Entiendo que esa linea es la linea que carga el fondo, por lo que si la cambias aleatoriamente...


Es correcto eliminar la imagen creada de forma temporal, una vez mostrada, ya no la necesitas.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

poner imagenes aleatorias de fondo a un captcha

Publicado por Sam (138 intervenciones) el 09/04/2015 22:26:14
Buenas, xve, efectivamente, imaginaba que seria la linea que me indicas la que debe aplicarsele una carga de imagenes

de fondo de manera aleatoria.

Se me ocurre con mt_rand.

Pero no se como encararlo, por que cada imagen tiene un nombre diferente es decir:

fondo_captcha_1.png, fondo_captcha_2.png

Lo unico que se me ocurre y no se si estaria bien o fuese la solucion idonea seria algo asi como:

"fondo_captcha_" . (mt_rand para que muestre un numero aleatorio) . "png"

Respecto de la segunda pregunta , gracias por aclararme el concepto.

Ojala fueses uno de mis profesores, da gusto aprender contigo.

(peloteo a parte)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve

poner imagenes aleatorias de fondo a un captcha

Publicado por xve (5513 intervenciones) el 10/04/2015 08:16:54
Hola Sam, gracias por tus comentarios.

La manera que describes, creo que seria la manera correcta.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

poner imagenes aleatorias de fondo a un captcha

Publicado por Sam (138 intervenciones) el 10/04/2015 12:35:06
Eureka!!! , funciono xve.

Pongo la solucion aqui por si a alguien mas le puede interesar:

$imagen = @imagecreatefrompng("../../imgs/fondo_captcha_".mt_rand(1, 5).".png");

Saludos a la comunidad.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar