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

Problemas con objetos y variables de sesion

Estas en el tema de Problemas con objetos y variables de sesion en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Hola, tengo un problema. Tratare de ser lo mas clara posible. Hasta ahora venia trabajando con objetos y variables de sesion sin problemas. Solamente tenia ...
  #1 (permalink)  
Antiguo 28/04/2006, 08:56
 
Fecha de Ingreso: abril-2006
Mensajes: 5
Antigüedad: 18 años
Puntos: 0
Problemas con objetos y variables de sesion

Hola, tengo un problema. Tratare de ser lo mas clara posible.
Hasta ahora venia trabajando con objetos y variables de sesion sin problemas. Solamente tenia una clase a la cual llamaba desde un include. El tema es que hoy desarrolle otra clase a la cual tambien llamo desde un include pero no funciona correctamente ya que no detecta que el objeto no existe y no me lo crea. Anda solamente con una clase, la segunda clase a la que llamo no funciona bien.
Seguramente tengo algun error de concepto que no estoy pudiendo ver. Me

Les paso un codigo de ejmplo para que lo vean.

Me da error en la linea 6 del index.php.
El error que me da es estoy llamando a un metodo de un objeto que no existe . El problema es que deberia crearlo pero no se porque no lo hace.

Fatal error: main() [function.main]: The script tried to execute a method or access a property of an incomplete object. Please ensure that the class definition <b>unknown</b> of the object you are trying to operate on was loaded _before_ the session was started in d:\apachegroup\amezqueta\sesiones\index.php on line 6

Muchisimas gracias

index.php
<? include ("archivo2.php");
include ("archivo1.php");

$_SESSION["clientes"]->asignar_nombre('Macarena'); /// funciona
$_SESSION["ocarrito"]->cargar_producto(); // no me crea el objeto carrito en archivo1.php.

?>

archivo1.php
<?
class carrito {

var $num_productos;

function cargar_producto()
{
//// algo.
}

}


session_start();
if (!isset($_SESSION["ocarrito"])){
$_SESSION["ocarrito"] = new carrito();
}

?>


archivo2.php
<?
class clientes {

var $nombre_cliente;

function asignar_nombre($nombre)
{
//// algo
}

}


session_start();
if (!isset($_SESSION["clientes"])){
$_SESSION["clientes"] = new clientes();
}
?>
  #2 (permalink)  
Antiguo 28/04/2006, 09:37
 
Fecha de Ingreso: abril-2006
Mensajes: 268
Antigüedad: 18 años
Puntos: 2
Estas iniciando la sesion dentro de archivo2.php y también de archivo1.php. El inicio de sesión deberias hacerlo sólo una vez. Podrias crear una archivo inicia_sesion.php e incluirlo en todos los scripts donde quieras iniciar la sesion.

inicia_sesion.php
Código PHP:
<?
session_start
();
if (!isset(
$_SESSION["ocarrito"])){
$_SESSION["ocarrito"] = new carrito();
}
if (!isset(
$_SESSION["clientes"])){
$_SESSION["clientes"] = new clientes();
}
?>
index.php
Código PHP:
<? include ("archivo2.php");
include (
"archivo1.php");
include(
"inicia_sesion.php");

$_SESSION["clientes"]->asignar_nombre('Macarena'); /// funciona
$_SESSION["ocarrito"]->cargar_producto(); // no me crea el objeto carrito en archivo1.php.
?>
archivo1.php
Código PHP:
<?
class carrito {

var 
$num_productos;

function 
cargar_producto()
{
//// algo.
}
}
?>
archivo2.php
Código PHP:
<?
class clientes {

var 
$nombre_cliente;

function 
asignar_nombre($nombre)
{
//// algo
}
}
?>
No te recomedaria que incluyeras otro código que no sea la definición de la clase en tus scripts que definen clases.
Saludos.
  #3 (permalink)  
Antiguo 28/04/2006, 12:36
 
Fecha de Ingreso: abril-2006
Mensajes: 5
Antigüedad: 18 años
Puntos: 0
Si lo pruebo de esa manera me da el sigueinte error

Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at d:\apachegroup\amezqueta\sesiones\archivo2.php:11) in d:\apachegroup\amezqueta\sesiones\inicia_sesion.ph p on line 2

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at d:\apachegroup\amezqueta\sesiones\archivo2.php:11) in d:\apachegroup\amezqueta\sesiones\inicia_sesion.ph p on line 2
  #4 (permalink)  
Antiguo 29/04/2006, 16:57
 
Fecha de Ingreso: abril-2006
Mensajes: 268
Antigüedad: 18 años
Puntos: 2
Fijate que no haya espacios en blanco luego del tag de cierre ?> en archivo2.php. Los espacios en blanco causan que se envien las cabeceras http por lo que no se puede enviar la cookie.
Saludos.
  #5 (permalink)  
Antiguo 02/08/2006, 11:20
 
Fecha de Ingreso: septiembre-2005
Ubicación: Vejer de la Fra, Cádiz
Mensajes: 83
Antigüedad: 18 años, 7 meses
Puntos: 0
Alguien tiene alguna solucion a este problema, es que a mi me pasa lo mismo y no consigo dar con la solucion, Muchas gracias. Uso php 5.
  #6 (permalink)  
Antiguo 02/08/2006, 12:07
 
Fecha de Ingreso: septiembre-2005
Ubicación: Vejer de la Fra, Cádiz
Mensajes: 83
Antigüedad: 18 años, 7 meses
Puntos: 0
ok, no contesten, encontre la respuesta por el foro. Gracias.

http://www.forosdelweb.com/f68/tengo-problemillas-con-objetos-sesiones-ayudemme-pls-273659/
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

SíEste tema le ha gustado a 1 personas (incluyéndote)




La zona horaria es GMT -6. Ahora son las 17:35.