Ver Mensaje Individual
  #5 (permalink)  
Antiguo 14/10/2010, 16:17
TraXX
 
Fecha de Ingreso: octubre-2010
Mensajes: 3
Antigüedad: 13 años, 6 meses
Puntos: 0
Respuesta: Problema al guardar objeto COM en variable de sesión

Pues en un primer archivo (funciones.php) tengo:

Código:
session_start();

....

try{
            $appD = new COM("ASDat.CASDataApp");
            $appD->InitMasterData(true, 1, 91);
            $appD->DateMask="ymd";
            //appD.UseCrypt=true
            $_readDB = $appD->IniciarApp(readDB());
	}catch(Exception $e){
            $_SESSION['errorDesc'] = 'No se pudo iniciar la conexión: ' . htmlentities($e->getMessage());
            header("Location: " . "../index.php");
            exit;
	}

....

$coll->filter="LOGIN LIKE '" . $_POST['user'] . "'";
	$coll->StartBrowse;
	if ($coll->currentitem){
		$obj = $coll->currentitem;
		if($obj){
			if ($obj["PWD"] == (string)$_POST['cl']){
				$_SESSION['user'] = $obj;
				
				try{					
					$appData->LoadEnterprise((string)$obj["IDEMPRESA"]);
					if($appData->CurrentEnterprise)
						$appData->CurrentEnterprise['MAP_IDCURRENTUSER'] = $obj['ID'];
					
					$_SESSION['userName'] = ucwords($_POST['user']);
					header('Location: prueba.php');
					exit;
					
				}catch(Exception $e){
					$_SESSION['errorDesc'] = 'Error inicializando empresa: ' . htmlentities($e->getMessage());
					header("Location: " . "../index.php");
					exit;
				}
			}
		}
	}

....
Y en otro segundo archivo, al que llego con la instrucción (header('Location: prueba.php');) tengo:

Código:
session_start();
$objUser = $_SESSION['user'];
echo 'Nombre Completo: ' . $objUser['NOMBRE'];
echo 'Nombre Usuario: ' . $_SESSION['userName'];

Si accedo a las variables de sesión desde el primer archivo, tanto $_SESSION['user'] (objeto COM) como $_SESSION['userName'] (string), me devuelven valores correctamente, pero si accedo a ellas desde el segundo archivo, solo $_SESSION['userName'] me devuelve el valor correcto, con el objeto guardado en $_SESSION['user'] me da error (no puedo acceder ni a sus propiedades ni a sus métodos), sin embargo la función isset($_SESSION['user']) me devuelve true (la variable no está vacía).