Ver Mensaje Individual
  #6 (permalink)  
Antiguo 07/02/2007, 08:27
Casuis
 
Fecha de Ingreso: septiembre-2005
Mensajes: 142
Antigüedad: 18 años, 8 meses
Puntos: 3
Re: Problema al tratar de acceder a un objeto almacenado en una veriable de Sesion

Exacto uno de los problemas es poner espacios en blanco antes del session_start y ponerla la primera linia de todas.

Después deberias serializar un objeto antes de guardarlo en session. Y antes de recuperlo cargar el include donde se define la clase y deserializarlo.

Hoy estoy de muy buen rollito (algunos paises de sudamerica se dice buena onda creo jeje) te he picado un pequeño ejemplo a ver si te ayuda.

Primero hacemos una clase que la guardaremos en sesion algo facil así que crearemos el fichero Persona.php

Código PHP:
<?php

class Persona{
    
    private 
$_nombre;
    private 
$_apellidos;
    
    public function 
__construct($nombre$apellidos){
        
$this->_nombre $nombre;
        
$this->_apellidos $apellidos;
    }
    
    public function 
getNombre(){
        return 
$this->_nombre;
    }
    
    public function 
setNombre($nombre){
        
$this->_nombre $nombre;
    }
    
    public function 
getApellidos(){
        return 
$this->_apellidos;
    }
    
    public function 
setApellidos($apellidos){
        
$this->_apellidos $apellidos;
    }
}

?>
Bien ahora lo que vamos a hacer es pasar este objeto desde la pagina inicio (index.php) a la pagina mostrar (mostrar.php)

El codigo de index.php
Código PHP:
<?php
session_start
();
require_once(
"Persona.php");

$persona1 = new Persona("Juan""Perez Garrido");
$_SESSION['persona'] = serialize($persona1);
?>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
  <meta content="text/html; charset=ISO-8859-1" http-equiv="content-type" />
  <title>Ejemplo Persona</title>
</head>
<body>
<a href="mostrar.php" alt="mostrar persona" >Ver la session persona</a>
<br />
</body>
</html>
y el codigo de mostrar.php

Código PHP:
<?php
session_start
();
require_once(
"Persona.php");
$persona unserialize($_SESSION['persona']);
?>


<html xmlns="http://www.w3.org/1999/xhtml">
<head>
  <meta content="text/html; charset=ISO-8859-1" http-equiv="content-type" />
  <title></title>
</head>
<body>
<p>El nombre de la persona es--><?echo $persona->getNombre(); ?></p>
<br />
</body>
</html>
Si sigues teniendo problemas mira el php.ini que tengas todo bien configurado mira el apartado de sesiones y que tengas permisos sobre todo si el handler es de ficheros. Espero que te sirva de ayuda. Ojo !!! la serialización de objetos no se lleva a cabo si el objeto lleva variables tipo "resource" u objetos con referencias circulares. (es decir objetos que pasan referencia a otros objetos de si mismos ) Un pelin complicado no? jejeje

+ info sobre sesiones http://es.php.net/session

Última edición por Casuis; 07/02/2007 a las 08:35