Nel mio ultimo progetto per Drupal 6, ho salvato i dati utilizzando un codice simile al seguente:
$_SESSION['xxx'] = serialize($data);
In Drupal 7, non funziona.
Come devo salvare i dati della sessione per gli utenti anonimi, in Drupal 7?
Nel mio ultimo progetto per Drupal 6, ho salvato i dati utilizzando un codice simile al seguente:
$_SESSION['xxx'] = serialize($data);
In Drupal 7, non funziona.
Come devo salvare i dati della sessione per gli utenti anonimi, in Drupal 7?
Risposte:
Questo perché drupal salva la sessione con la chiave, questo significa che dovresti fare qualcosa del genere
$_SESSION['yourkey']['xxx'] = serialize($data);
Puoi provare questo.
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];
}
Quindi, per salvare una variabile in Sessione:
lists_session("xxx", serialize($data));
E per recuperare il valore, basta usare:
$myVar = lists_session("xxx");
e anche come menziona MOLOT a volte sessione non iniziata per utenti anonimi, allora dovresti drupal_session_start()
manualmente.
Secondo i documenti , questo è tutto ciò che dovresti fare.
Ciò significa che è presente un bug o che le tue pagine vengono memorizzate nella cache per utenti anon quindi i dati della sessione non vengono letti. Vorrei verificare le impostazioni di memorizzazione nella cache in primo luogo.
Drupal 7 a volte non avvia automaticamente le sessioni per utenti anonimi. Per utilizzare le sessioni per loro, potrebbe essere necessario forzare l'avvio della sessione con drupal_session_start per poterlo utilizzare $_SESSION
.