En mi último proyecto para Drupal 6, guardé los datos usando un código similar al siguiente:
$_SESSION['xxx'] = serialize($data);
En Drupal 7, no funciona.
¿Cómo debo guardar los datos de sesión para los usuarios anónimos, en Drupal 7?
En mi último proyecto para Drupal 6, guardé los datos usando un código similar al siguiente:
$_SESSION['xxx'] = serialize($data);
En Drupal 7, no funciona.
¿Cómo debo guardar los datos de sesión para los usuarios anónimos, en Drupal 7?
Respuestas:
Es porque drupal guardar sesión con clave, esto significa que debe hacer algo como
$_SESSION['yourkey']['xxx'] = serialize($data);
Puedes probar esto.
function lists_session($key, $value = NULL) {
global $user;
static $storage;
// If the user is anonymous, force a session start.
if(!user->uid) {
drupal_session_start();
}
if ($value) {
$storage[$key] = $value;
$_SESSION['lists'][$key] = $value; // I use 'lists' in case some other module uses 'type' in $_SESSION
}
else if (empty($storage[$key]) && isset($_SESSION['lists'][$key])) {
$storage[$key] = $_SESSION['lists'][$key];
}
return $storage[$key];
}
Entonces, para guardar una variable en la sesión:
lists_session("xxx", serialize($data));
Y para recuperar el valor, solo use:
$myVar = lists_session("xxx");
y además, como menciona MOLOT, a veces la sesión no se ha marcado para usuarios anónimos, entonces debería hacerlo drupal_session_start()
manualmente.
Según los documentos , eso es todo lo que debe hacer.
Lo que significa que hay un error o que sus páginas están siendo almacenadas en caché para los usuarios que no están leyendo los datos de la sesión. Verificaría su configuración de almacenamiento en caché en primera instancia.
Drupal 7 a veces no inicia automáticamente sesiones para usuarios anónimos. Para usar sesiones para ellos, es posible que deba forzar la sesión iniciada con drupal_session_start para poder usar $_SESSION
.