Foros del Web » Programando para Internet » PHP » Frameworks y PHP orientado a objetos »

problema objeto y sesiones

Estas en el tema de problema objeto y sesiones en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Hola a todos, tengo un problema a la hora de "transportar" objetos mediante sesiones. Os cuento primero lo que me ocurre y luego lo que ...
  #1 (permalink)  
Antiguo 17/07/2007, 03:46
 
Fecha de Ingreso: julio-2004
Mensajes: 117
Antigüedad: 19 años, 10 meses
Puntos: 0
problema objeto y sesiones

Hola a todos, tengo un problema a la hora de "transportar" objetos mediante sesiones. Os cuento primero lo que me ocurre y luego lo que he intentado hacer para solucionarlo (sin éxito).

Tengo una función (cabecera), que muestra el valor de los atributos de un objeto. Cuando arranca el sistema (despues de un registro), creo un objeto usuario con el valor de sus atributos y lo guardo en una session. La primera vez que llamo a cabecera, obtengo el objeto de la sesión e imprimo sus valores. La segunda vez que entra en cabecera, no hay problema para obtener el objeto de la sesión (al menos no da error), pero no puedo acceder a sus valores.

Código PHP:

    
function cabecera(){
        if (isset( 
$_SESSION['usuario']) and $_SESSION['revista']){
            
$usuario=$_SESSION['usuario'];
            
$revista=$_SESSION['revista'];
        }else{
            echo 
" no hay sesion";
        }

        echo 
$usuario;
        echo 
$usuario->nombre;
        echo 
$revista;
        echo 
$revista->titulo;
        
$rol=get_class($usuario);
        echo 
"rol";
        echo 
$rol;
    } 
La primera vez muestra todo correctamente. La siguiente vez que la llamo, muestra lo mismo excepto los atributos nombre, titulo y rol

Código:
Object id #1Object id #2rol__PHP_Incomplete_Class
La variable sigue almacenada en la sesión con los mismos valores que la primera vez.

He leido en este foro y por internet, posibles soluciones que he intentado, pero el resultado es el mismo.

1.- Poner la definición de las clases antes de iniciar session (lo he puesto tanto antes, como después, como no ponerla).

2.- Poner en php.ini ->session.auto_start = 0; ya lo tenía así;

3.- Usar serialize y unserialize (he leido q con el session_start ya valdría)

4.- No he probado a volver a guardar el objeto en la session despues de leer porque no he modificado su estado y creo haber leido que aunque se modifique, al finalizar la ejecución se almacena de nuevo automaticamente (pero no estoy seguro).

¿alguien sabe por qué falla?
Muchas Gracias
  #2 (permalink)  
Antiguo 17/07/2007, 07:27
 
Fecha de Ingreso: noviembre-2003
Mensajes: 798
Antigüedad: 20 años, 5 meses
Puntos: 8
Re: problema objeto y sesiones

quizás deberías postear el código en que creas por 1º vez el objeto y lo guardas en la session.
  #3 (permalink)  
Antiguo 17/07/2007, 15:11
 
Fecha de Ingreso: julio-2004
Mensajes: 117
Antigüedad: 19 años, 10 meses
Puntos: 0
Re: problema objeto y sesiones

Cita:
quizás deberías postear el código en que creas por 1º vez el objeto y lo guardas en la session.
Sin problemas, aí dejo el código...

Código PHP:
//dentro de una funcion
$coordinador= new coordinador ($resultado['nombre'][0], $resultado['apellidos'][0], $resultado['telefono'][0], $resultado['email'][0], $resultado['login'][0],$resultado['password'][0]);

$revista= new revista ($resultado['titulo'][0], $resultado['subtitulo'][0]);

$this->abrir_sesion($coordinador,$revista);
}

function 
abrir_sesion($usu,$rev){
        
$_SESSION['usuario']=$usu;
        
$_SESSION['revista']=$rev;

Gracias, un saludo
  #4 (permalink)  
Antiguo 17/07/2007, 15:18
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Re: problema objeto y sesiones

Si PHP te esta marcando PHP_Incomplete_Class es que no pudo cargar el objeto al deserializar el objeto, esto es resultado de que la definicion no existe al intentar hacer session_start().

Para remediar esto debes de tener siempre un lugar donde llamas session_start(), y justo antes de eso incluir las deficiniones de tus clases asi evitas que se "mal construyan"

Saludos.
  #5 (permalink)  
Antiguo 19/07/2007, 05:41
 
Fecha de Ingreso: julio-2004
Mensajes: 117
Antigüedad: 19 años, 10 meses
Puntos: 0
Re: problema objeto y sesiones

Perdón por la tardanza, pero es que lo quería probar bien antes de postear para ver si daba con el fallo, lo estoy probando con esto puesto así:

Código PHP:
<?php

  
include('./modelo/coordinador.php');
  include(
'./modelo/revista.php');

  
session_save_path ("./temp"); 
  
session_start();

class 
vista {
....... 
metodos donde cargo la pagina en cuestión y recupero las variables de session que dan problemas
}
y sigue sin funcionar...

Gracias GatorV por echarlo un vistazo
  #6 (permalink)  
Antiguo 19/07/2007, 07:57
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Re: problema objeto y sesiones

Que version de PHP Manejas?

En teoria todo esta bien, estas seguro que es la unica parte donde llamas a session_start()? tambien no creo que sea necesario usar session_save_path ya que te puede llevar a problemas si en otro lugar no la declaras.

Saludos.
  #7 (permalink)  
Antiguo 20/07/2007, 11:17
 
Fecha de Ingreso: julio-2004
Mensajes: 117
Antigüedad: 19 años, 10 meses
Puntos: 0
Re: problema objeto y sesiones

Hola Gatorv, he "solucinado" el problemilla (al menos de momento), pero me resulta muy extraño donde fallaba. El archivo que tenía que abrir las sessiones tenía un include de otro archivo php (para que nos entendamos, ese archivo incluido ponía un menú y como se repite siempre pues lo saqué a un archivo y si tengo que modificarlo no lo cambio en todas las páginas). Resulta que ese archivo empezaba y terminaba por..

<?

?>

El caso es que después del ?> habia 3 saltos de línea. Cuando puse los includes antes del session_start() me decia que ya se habia enviado una salida y no se enviaba nada (las clases que incluía no tenían salida, simplemente cambiaban sus atributos). He quitado esos saltos de línea y parece que ahora funciona sin problemas. Me imagino que ese no sea el fallo y casi seguro que volveré a tener problemas en el futuro (a ver si hay suerte y no pasa nada porque bastantes dolores de cabeza me ha dado).

Por responderte uso "php 5.1.2". Gracias por todo, si me das algún consejo sobre que ha podido pasar, supongo que en la inclusión, te lo agradeceré a ver si aprendo de estos problemas.

Un saludo.
  #8 (permalink)  
Antiguo 20/07/2007, 11:22
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Re: problema objeto y sesiones

Si tenias los tres saltos de linea al final eso te hace que se envien cabeceras antes de iniciar la session y por ende tendrias esos problemas.

Saludos.
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 04:55.