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).