Ver Mensaje Individual
  #5 (permalink)  
Antiguo 17/04/2012, 12:00
Borsetto
 
Fecha de Ingreso: enero-2010
Mensajes: 69
Antigüedad: 15 años
Puntos: 0
De acuerdo Respuesta: Variables de sesión vacías (cookies deshabilitadas en navegador)

Ya está!

Finalmente sí, era necesario acceder a los archivos de sesiones creados, pero no de forma manual sino utilizando un gestor de sesiones (una clase que implemente las funciones open, close, read, write, destroy y gc) y una llamada a la función session_set_save_handler.

Para quienes se encuentren en la misma situación que yo, les adjunto el código. El de page1.php es el mismo que el anteriormente descrito, mientras que el page2.php debe contener lo siguiente (es un mero ejemplo):

Código PHP:
<?php

class FileSessionHandler
{
    private 
$savePath;

    function 
open($savePath$sessionName)
    {
        
$this->savePath $savePath;
        if (!
is_dir($this->savePath)) {
            
mkdir($this->savePath0777);
        }

        return 
true;
    }

    function 
close()
    {
        return 
true;
    }

    function 
read($id)
    {
        return (string)@
file_get_contents("$this->savePath/sess_$id");
    }

    function 
write($id$data)
    {
        return 
file_put_contents("$this->savePath/sess_$id"$data) === false false true;
    }

    function 
destroy($id)
    {
        
$file "$this->savePath/sess_$id";
        if (
file_exists($file)) {
            
unlink($file);
        }

        return 
true;
    }

    function 
gc($maxlifetime)
    {
        foreach (
glob("$this->savePath/sess_*") as $file) {
            if (
filemtime($file) + $maxlifetime time() && file_exists($file)) {
                
unlink($file);
            }
        }

        return 
true;
    }
}

$handler = new FileSessionHandler();
session_set_save_handler(
    array(
$handler'open'),
    array(
$handler'close'),
    array(
$handler'read'),
    array(
$handler'write'),
    array(
$handler'destroy'),
    array(
$handler'gc')
    );

// lo siguiente previene de efectos inesperados al usar objetos como gestores de almacenamiento
register_shutdown_function('session_write_close');

session_id($_GET['prueba']);

session_name("prueba");
session_start();

echo 
"<br>color: ".$_SESSION['favcolor']."<br>";