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

Problema al tratar de acceder a un objeto almacenado en una veriable de Sesion

Estas en el tema de Problema al tratar de acceder a un objeto almacenado en una veriable de Sesion en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Hola comunidad, mi problema se basa en que llegue a un momento en el cual debia pasar un objeto desde una pagina hacia otra, y ...
  #1 (permalink)  
Antiguo 13/01/2007, 16:06
 
Fecha de Ingreso: diciembre-2006
Mensajes: 3
Antigüedad: 17 años, 4 meses
Puntos: 0
Problema al tratar de acceder a un objeto almacenado en una veriable de Sesion

Hola comunidad, mi problema se basa en que llegue a un momento en el cual debia pasar un objeto desde una pagina hacia otra, y crei que lo mejor seria con variables de sesion.(Soy nuevo en este lenguaje). Busque en google y encontre algunos foros que mencionen lo mismo o similar pero no consigo = solucionarlo, si alguien sabe le agradeceria.

tengo dos paginas validarUsuario.php que crea el objeto y lo almacena en la variable sesion $_SESSION['bedel'] y indexBedeles.php que quiere leer ese objeto. Y otro q es usuario.php que es el que tiene las clases.
Al hacerlo me aparecen los siguientes Warning:

Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /var/www/gestionBRA/includes/usuario.php:1) in /var/www/gestionBRA/indexBedeles.php on line 3

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /var/www/gestionBRA/includes/usuario.php:1) in /var/www/gestionBRA/indexBedeles.php on line 3

Les dejo el codigo:
************************************************** *******
/* validarUsuario.php */
<?php
include ("./includes/mySql5.php");
include ("./includes/usuario.php");
session_start();
?>
<html>
<head>
<title>Validar Usuario</title>
</head>
<body>
<?php
$conexion=conectarse("localhost","root","leinad362 502","Gestionbra");
$stringSql=(" select *
from Usuario
where idUsuario='$_REQUEST[nombreUsuario]'");
$resultado=consulta($stringSql,$conexion);

if($usu=mysql_fetch_array($resultado)){
if($usu['contrasenia']==$_REQUEST['contrasenia']){

$idUsu=$_REQUEST['nombreUsuario'];
$pass=$usu['contrasenia'];
$nom=$usu['nombre'];
$ape=$usu['apellido'];
$turno=$usu['turnoTrabajo'];

switch($usu['tipoUsuario']){
case 'Bedel':
$bedel=new Bedel($idUsuario,$pass,$ape,$nom,$turno,null,null) ;
$_SESSION['bedel']=$bedel;
var_dump($bedel);
echo "<hr>";
var_dump($_SESSION['bedel']);
echo"<script>window.location.href='./indexBedeles.php?bedel=$argumento';</script>";
break;
case 'Administrador':
echo"<script>window.location.href='./indexAdministrador.php';</script>";
break;
case 'Auditor':
echo"<script>window.location.href='./indexAuditor.php';</script>";
break;
}//fin switch($usu['tipoUsuario'])
}//fin if contrasenia.
else{
echo "<script>alert('Contrasenia no valida para este nombre de Usuario.Por favor vuelva a intentarlo')</script>";
echo"<script>window.location.href='./formularioValidarUsuario.php';</script>";
}
}// fin if($usu=mysql_fetch_array($resultado))
else{
echo "<script>alert('Usuario no registrado en el sistema.Por favor vuelva a intentarlo')</script>";
echo"<script>window.location.href='./formularioValidarUsuario.php';</script>";
}
?>
</body>
</html>
************************************************** *******
/* indexBedeles */
<?php
include ("./includes/usuario.php");
session_start();
//el error de los warning es que primero hago el include y luego activo la sesion, //pero de no ser asi, el objeto me queda incompleto.
echo "<br><hr>";
var_dump($_SESSION['bedel']);
?>
[...]
************************************************** *******
/* usuario.php*/
<?php
class Usuario{
private $idUsuario;
private $contrasenia;
private $apellido;
private $nombre;

function setDatos($idUsu,$pass,$ape,$nom){
$this->idUsuario=$idUsu;
$this->contrasenia=$pass;
$this->apellido=$ape;
$this->nombre=$nom;
}

function setIdUsuario($id) { $this->idUsuario=$id; }
function setContrasenia($pass) { $this->contrasenia=$pass; }
function setApellido($ape) { $this->apellido=$ape; }
function setNombre($nom) { $this->nombre=$nom; }

function getIdUsuario() { return $this->idUsuario; }
function getContrasenia() { return $this->contrasenia; }
function getApellido() { return $this->apellido; }
function getNombre() { return $this->nombre; }

}// fin class Usuario

class Bedel extends Usuario{
private $turnoTrabajo;
private $gestionReserva;
private $gestionAula;

public function __construct($idUsu,$pass,$ape,$nom,$turnoT,$gestio nR,$gestionA){
$this->setDatos($idUsu,$pass,$ape,$nom);
$this->gestionReserva=$gestionR;
$this->gestionAula=$gestionR;
}

function registrarAula(){}
function modificarAula(){}
function buscarAula(){}
function eliminarAula(){}
function buscarReserva(){}
function registrarReserva(){}
function cancelarReserva(){}

function setTurnoDeTrabajo($tt) { $this->turnoTrabajo=$tt; }
function setGestionReserva($gR) { $this->gestionReserva=$gR; }
function setGestionAula($gA) { $this->gestionAula=$gA; }

function getTurnoTrabajo() { return $this->turnoTrabajo; }
function getGestionReserva() { return $this->gestionReserva; }
function getGestionAula() { return $this->gestionAulas; }
}//fin class Bedel

class Administrador extends Usuario{
private $gestionBedel;

public function __construct($idUsu,$pass,$ape,$nom,$turnoT,$gestio nB){
$this->setDatos($idUsu,$pass,$ape,$nom);
$this->gestionBedel=$gestionB;
}

function registrarBedel() {}
function buscarBedel() {}
function eliminarBedel() {}
function modificarBedel() {}

function setGestionBedel($gB) { $this->gestionBedel=$gB; }
function getGestionBedel() { return $this->gestionBedel; }

}//fin class Administrador
?>

Les agradeceria que me den una mano. En indexBedeles.php explico lo que yo creo q es el error, pero no se la solucion, si altero la posicion me dice:
object(__PHP_Incomplete_Class) (...).

Alguna sugerencia o link que me pueda ayudar.
Gracias de antemano
  #2 (permalink)  
Antiguo 13/01/2007, 20:19
Avatar de enriqueplace  
Fecha de Ingreso: mayo-2005
Ubicación: Uruguay / Argentina
Mensajes: 1.102
Antigüedad: 18 años, 11 meses
Puntos: 32
Re: Problema al tratar de acceder a un objeto almacenado en una veriable de Sesion

¡No, no y no!... no es correcto enviar *todo* el sistema y crear un mensaje "kilométrico" para esperar "sentado" a que otro resuelva nuestros problemas!

Se conciso, concreto, comenta el error y los lugares donde te lleva la información de error.

Si te dicen: ¿"headers already sent by"?

Prueba de iniciar primero, antes que nada, la sesión, y para que el objeto llegue al "otro lado entero" haz un "include" de la definición del mismos.
__________________
Blog phpsenior.com Cursos a Distancia surforce.com
  #3 (permalink)  
Antiguo 14/01/2007, 09:08
 
Fecha de Ingreso: febrero-2006
Mensajes: 34
Antigüedad: 18 años, 2 meses
Puntos: 0
Re: Problema al tratar de acceder a un objeto almacenado en una veriable de Sesion

A ver... si en una pagina guardas un objeto en una variable de sesion, en la otra paguina (a la q te dirigis) debes cargar la clase antes de poner session_start();


Código:
//pagina1.php


$_SESSION["var1"] = $objeto
Código:
//pagina2.php

include 'archivo_q_contiene_la_clase.php';

session_start();

echo $_SESSION["var1"]->propiedad;


espero q te sirva, saludos
  #4 (permalink)  
Antiguo 07/02/2007, 07:42
 
Fecha de Ingreso: diciembre-2006
Mensajes: 3
Antigüedad: 17 años, 4 meses
Puntos: 0
Re: Problema al tratar de acceder a un objeto almacenado en una veriable de Sesion

gente sigue sin funcionar, porqué no entien ya, eh probado muchas cosas, les dejo nuevamente lo que me pasa:

pagina1.php (donde instancio el objeto)
<?php
session_start();
include ("./includes/usuario.php");
$bedel=new Bedel($idUsuario,$pass,$ape,$nom,$turno,null,null) ;
$_SESSION['bedel']=$bedel;
?>

pagina2.php
<?php
include ("./includes/usuario.php");
session_start();
var_dump($_SESSION['bedel']);
?>

hoy dos problemas, en este caso si dejo el include antes de iniciar la sesion me tira dos warning, q en el msj anterior los pusé.
y si saco esa linea para que la primera sea el inicio de sesion, el msj que me aparece es el de objet PHP incomplete.

cómo hago?, alguien tuvo el mismo problema?
  #5 (permalink)  
Antiguo 07/02/2007, 08:12
Avatar de Angel K ido  
Fecha de Ingreso: febrero-2007
Mensajes: 48
Antigüedad: 17 años, 2 meses
Puntos: 0
Re: Problema al tratar de acceder a un objeto almacenado en una veriable de Sesion

Simplemente borra todos los espacios antes del <?php y te vas a sorprender. Jeje.
Saludos
  #6 (permalink)  
Antiguo 07/02/2007, 08:27
 
Fecha de Ingreso: septiembre-2005
Mensajes: 142
Antigüedad: 18 años, 7 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
  #7 (permalink)  
Antiguo 07/02/2007, 08:40
Avatar de Angel K ido  
Fecha de Ingreso: febrero-2007
Mensajes: 48
Antigüedad: 17 años, 2 meses
Puntos: 0
Re: Problema al tratar de acceder a un objeto almacenado en una veriable de Sesion

Muy buena Casuis
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 08:38.