Problema con variable en imagen dinámica

  • Autor Autor Noshy
  • Fecha de inicio Fecha de inicio
Noshy

Noshy

Dseda
Redactor
Verificación en dos pasos activada
Hola gente, tengo una grandisima duda, en mi sitio tengo una imagen dinamica en la cual me pega un text que tengo en una variable $_SESSION['variable']
resulta que esa variable me la toma en toda la web menos dentro de la imagen dinamica.

Espero haberme explicado bien.

saludos
 
Me temo que yo no entendí nada. Has probado que el problema no sea de la imagen dinámica?, Si pones un poco de código podremos ayudarte mucho mejor seguro.
 
Perdon por explicarme tan mal: voy con un poco de codigo explicado:

Baje una clase de PHP - Captcha donde el codigo original es asi


Index.php
PHP:
<?php
// Esto es para hacer la comprobacion:
  session_start();
  $captcha_anterior = $_SESSION["CAPTCHA"];

// Iniciamos CAPTCHA (genera el numero a comprobar)
include "comun/__captcha.inc.php";
?>
<p>Por favor ingrese el codigo que ve en la imagen, sino puede leerlo actualize la pagina.</p>
<p align="center"><img src="captcha.img.php" /></p>

captcha.inc.php
PHP:
<?php
	$captcha_texto = "";
	$caracteres="abcdefghiklmnopqrstuvwxyz123456789";
	for ($i = 1; $i <= 6; $i++) {
	    mt_srand((double)microtime()*1000000);
	    $valor_aleatorio = mt_rand(0,strlen($caracteres)-1);
	    $captcha_texto .= $caracteres[$valor_aleatorio];
	}
	$_SESSION["CAPTCHA"] = $captcha_texto;
	unset($captcha_texto);
?>

captcha.img.php
PHP:
<?php
	//creamos la imagen definiendo el tamaño del alto y el ancho (140, 35)
	$captcha_imagen = imagecreate(130,30);
	//creamos el color negro para el fondo y blanco para los caracteres
	$color_negro = imagecolorallocate ($captcha_imagen, 0, 0, 0);
	$color_blanco = imagecolorallocate ($captcha_imagen, 255, 255, 255);
	$color_gris = imagecolorallocate ($captcha_imagen, 55, 55, 55);
	//pintamos el fondo con el cplor negro creado anteriormente
	imagefill($captcha_imagen, 0, 0, $color_negro);

	//iniciamos la session para obtener los caracteres a dibujar
	$captcha_texto = $_SESSION["CAPTCHA"];
	
        //dibujamos los caracteres de color blanco
	imagechar($captcha_imagen, 4, 10, 8,  $captcha_texto[0] ,$color_blanco);
	imagechar($captcha_imagen, 5, 30, 8,  $captcha_texto[1] ,$color_blanco);
	imagechar($captcha_imagen, 3, 50, 8,  $captcha_texto[2] ,$color_blanco);
	imagechar($captcha_imagen, 4, 70, 8,  $captcha_texto[3] ,$color_blanco);
	imagechar($captcha_imagen, 5, 90, 8,  $captcha_texto[4] ,$color_blanco);
	imagechar($captcha_imagen, 3, 110, 8, $captcha_texto[5] ,$color_blanco);
	//indicamos que lo que vamos a mostrar es una imagen
	header("Content-type: image/jpeg");
	//mostramos la imagen
	imagejpeg($captcha_imagen);

?>


Desde aca el codigo modificado para mi web
Index.php
PHP:
<?php
// Esto es para hacer la comprobacion:
  session_start();
  $captcha_anterior = $_SESSION["CAPTCHA"];

// Iniciamos CAPTCHA (genera el numero a comprobar)
include "captcha/captcha.inc.php";
?>
<p>Por favor ingrese el codigo que ve en la imagen, sino puede leerlo actualize la pagina.</p>
<p align="center"><img src="captcha.img.php" /></p>

los demas archivos son los mismo.

el problema es q en el archivo captcha.img.php, en la linea
PHP:
	//iniciamos la session para obtener los caracteres a dibujar
	$captcha_texto = $_SESSION["CAPTCHA"];

la variable $_SESSION["CAPTCHA"] esta en blanco.

La gran duda mia, es que en casa con appserver y desde localhost si funciona bien
pero cuando lo cuelgo en el hosting (propio) no funciona.

he comparados los php.ini de ambas pc y estan iguales. no se cual sera el problema.

ahora espero haberlo explicado jeje

saludos
 
Última edición:
en el archivo captcha.img.php no inicias en ningún lugar las sesiones y tampoco haces un include desde un archivo que ya haya inicializado las sesiones. Te recomiendo que uses otro captcha (Enlace eliminado)
Insertar CODE, HTML o PHP:
<?php
session_start();
    //creamos la imagen definiendo el tamaño del alto y el ancho (140, 35)
    $captcha_imagen = imagecreate(130,30);
    //creamos el color negro para el fondo y blanco para los caracteres
    $color_negro = imagecolorallocate ($captcha_imagen, 0, 0, 0);
    $color_blanco = imagecolorallocate ($captcha_imagen, 255, 255, 255);
    $color_gris = imagecolorallocate ($captcha_imagen, 55, 55, 55);
    //pintamos el fondo con el cplor negro creado anteriormente
    imagefill($captcha_imagen, 0, 0, $color_negro);

    //iniciamos la session para obtener los caracteres a dibujar
    $captcha_texto = $_SESSION["CAPTCHA"];
    
        //dibujamos los caracteres de color blanco
    imagechar($captcha_imagen, 4, 10, 8,  $captcha_texto[0] ,$color_blanco);
    imagechar($captcha_imagen, 5, 30, 8,  $captcha_texto[1] ,$color_blanco);
    imagechar($captcha_imagen, 3, 50, 8,  $captcha_texto[2] ,$color_blanco);
    imagechar($captcha_imagen, 4, 70, 8,  $captcha_texto[3] ,$color_blanco);
    imagechar($captcha_imagen, 5, 90, 8,  $captcha_texto[4] ,$color_blanco);
    imagechar($captcha_imagen, 3, 110, 8, $captcha_texto[5] ,$color_blanco);
    //indicamos que lo que vamos a mostrar es una imagen
    header("Content-type: image/jpeg");
    //mostramos la imagen
    imagejpeg($captcha_imagen);

?>
 
Es cierto hamlet necesitas iniciar sesiones e incluir las cabeceras necesarias para poder acceder a esos archivos y por su puesto al codigo del captcha.
 
Perfecto, solucionado, faltaba el session_start() dentro de captcha.img.php, creia que ya lo tomaba al ponerlo en el index.php pero la imagen dinamica parece que no funciona como un inlcude.

siempre se aprende algo nuevo jeje

GRACIAS A TODOS!!!!!
 
Atrás
Arriba