Foros del Web » Programando para Internet » PHP »

Perdida de sesion al incluir una imagen

Estas en el tema de Perdida de sesion al incluir una imagen en el foro de PHP en Foros del Web. Hola, Les hago una consulta. Tengo un formulario de contacto en una pagina llamada formulario.php . Este formulario tiene un captcha que siempre ha funcionado ...
  #1 (permalink)  
Antiguo 03/05/2011, 08:58
 
Fecha de Ingreso: agosto-2002
Mensajes: 202
Antigüedad: 21 años, 8 meses
Puntos: 1
Perdida de sesion al incluir una imagen

Hola,

Les hago una consulta. Tengo un formulario de contacto en una pagina llamada formulario.php. Este formulario tiene un captcha que siempre ha funcionado (hasta ahora) hecho a mano de la siguiente manera.

Primero que nada formulario.php hace un session_start, crea una variable de sesión llamada $_SESSION["numero"] con un valor aleatorio y muestra el numero aleatorio dentro de una imagen con la siguiente linea:

Código PHP:
<img src="../imagen.php" /> 
El script imagen.php lo que hace es también un session_start, recupera el numero de la variable de sesión y lo dibuja en forma gráfica (con gd) devolviendo una imagen.

Al hacer un submit de formulario.php, se va al script que envía el email en donde primero se compara que lo que viene del campo del formulario sea igual al valor de la variable de sesión.


Bueno, el problema es que de un dia para el otro (se ve que por algun cambio en la configuracion del sevidor) el hecho de incluir la imagen <img src="../imagen.php" /> dentro del formulario hace que se pierda la sesión de todo el sitio (posiblemente porque tambien hace un session_start, aunque si no lo hace no puede recuperar la variable numero).

Me llevo muchisimo tiempo encontrar esto porque he buscado el problema por cualquier otro lado.... Una vez que lo encontre buscando en internet encontre un error similar de sesiones que se perdian al llamar a un popup que hiciera un session_start (algo parecido a esto, solo que en vez de un popup es un php que devuelve una imagen). Recomendaban propagar el SID, pero no he logrado hacerlo ni se si es la solución.

Quería consultarles si alguien sabe como se puede evitar este error.

Por cualquier respuesta muchas gracias.

Leo
__________________
Principio Legal Legalidad en la web y Directorio de Software Open Source
Pais Once El lugar donde descubrir una ciudad
  #2 (permalink)  
Antiguo 03/05/2011, 09:32
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 9 meses
Puntos: 1532
Respuesta: Perdida de sesion al incluir una imagen

por defecto la cookie de la sesión expira a los 30 minutos, no se ha que te refieres.
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #3 (permalink)  
Antiguo 03/05/2011, 09:37
 
Fecha de Ingreso: agosto-2002
Mensajes: 202
Antigüedad: 21 años, 8 meses
Puntos: 1
Respuesta: Perdida de sesion al incluir una imagen

Hola, gracias por responder !

Nono, no hay problema con eso. La sesión se pierde instantaneamente al cargar la pagina.

Con lo de un dia para el otro quise decir que antes andaba y sin cambiar nada empezo a ocurrir ese error.

Leo
__________________
Principio Legal Legalidad en la web y Directorio de Software Open Source
Pais Once El lugar donde descubrir una ciudad
  #4 (permalink)  
Antiguo 03/05/2011, 10:43
(Desactivado)
 
Fecha de Ingreso: abril-2011
Mensajes: 153
Antigüedad: 13 años
Puntos: 236
Respuesta: Perdida de sesion al incluir una imagen

Hola buen día!
No estoy seguro cuál es la falla, deberías de dejarnos el código fuente del formulario y la imagen.
Viendo tu forma para llevar a cabo el captcha hize uno similar.

Archivo del formulario:
Código HTML:
<?php 
session_start();
$_SESSION["numero"]=rand(1000,9999);
?>
<html>
<head></head>
<body>
<form>
<img src="img.php" />
</form>
</body>
</html> 
Archivo de la imagen (img.php):

Código PHP:
<?php
session_start
();
header("Content-type:image/jpeg");
$img=imagecreate(100,50);
$fondo=imageColorAllocate($img,140,140,140);
$color=imageColorAllocate($img,255,255,255);
imageFill($img,0,0,$fondo);
imageString($img,5,30,10,$_SESSION[numero],$color);
imageJPEG($img);
?>
Si lo pruebas, no se pierde la sesión.

Saludos
  #5 (permalink)  
Antiguo 03/05/2011, 13:18
 
Fecha de Ingreso: agosto-2002
Mensajes: 202
Antigüedad: 21 años, 8 meses
Puntos: 1
Respuesta: Perdida de sesion al incluir una imagen

Hola Angelfcm,

El codigo es muy parecido al que has puesto ahi, exactamente es el siguiente:

Para imagen.php

Código PHP:
<?php

session_start
(); // esta linea hace que se pierda la sesion, si la saco obviamente no se pueden recuperar los valores de las variables de sesion.

$imagen imagecreatefromjpeg("imagenes/fondonumero.jpg");
$colText imagecolorallocate($imagen255255255);
imagestring($imagen452$_SESSION["numero"], $colText);
header("Content-type: image/jpeg");
imagejpeg($imagen);

?>
Un par de datos: Una vez que se pierde la sesion, pierde para todo el sitio (justamente es una sesion), es decir cualquier otra variable declarada se borra. Sin embargo no es el problema el hecho de pasar de paginas a paginas, ahi funciona bien. El error solo se da en el session_start del archivo imagen.php

Y otra cosa mas rara. El mismo script funciona ok en varios sitios mas, incluso en mi pc e incluso tambien en otras cuentas de hosting del mismo servidor.

Nuevamente gracias por las sugerencias.

Leo
__________________
Principio Legal Legalidad en la web y Directorio de Software Open Source
Pais Once El lugar donde descubrir una ciudad
  #6 (permalink)  
Antiguo 04/05/2011, 19:46
(Desactivado)
 
Fecha de Ingreso: abril-2011
Mensajes: 153
Antigüedad: 13 años
Puntos: 236
Respuesta: Perdida de sesion al incluir una imagen

Hola
El error no está en la imagen, está en el archivo dónde llamas a la imagen, debes pasarnos el cógido désde dónde escribes session_start() hasta dónde escribes <img src="http://www.forosdelweb.com/f18/imagen.php" /> .
  #7 (permalink)  
Antiguo 05/05/2011, 10:35
 
Fecha de Ingreso: agosto-2002
Mensajes: 202
Antigüedad: 21 años, 8 meses
Puntos: 1
Respuesta: Perdida de sesion al incluir una imagen

Hola angelfcm,

Muchas gracias por tu respuesta.

Te cuento que buscando información por internet pude encontrar como solucionarlo. El problema es que no se estaba propagando la sesión y en el archivo de la imagen el session_start volvía a crear una nueva sesión en vez de recuperar la anterior (por alguna configuración o cambio en el servidor ya que en mi pc andaba ok y en el servidor antes tambien).

Para solucionarlo lo que recomendaban hacer es incluir las siguientes dos lineas en el php.ini

session.use_cookies
session.use_trans_sid

Lo que hice fue armar un php.ini especialmente para la carpeta que contenia al script con esas dos lineas y con eso empezó a funcionar correctamente.

Nuevamente gracias por las respuestas,

Leo
__________________
Principio Legal Legalidad en la web y Directorio de Software Open Source
Pais Once El lugar donde descubrir una ciudad
  #8 (permalink)  
Antiguo 05/05/2011, 21:26
(Desactivado)
 
Fecha de Ingreso: abril-2011
Mensajes: 153
Antigüedad: 13 años
Puntos: 236
Respuesta: Perdida de sesion al incluir una imagen

Ha muy buena solución, entonces a lo mejor el php.ini fué modificado de alguna forma, que bien que hayas encontrado la solución, igual gracias a ti por que ya me solucionaste un error futuro(por si me llega a pasar hehe).

Saludos leoi

Etiquetas: incluir, perdida
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:55.