Vorrei usare una sessione variabile ($ _session) ma non funziona in Drupal 7. Quali sono le possibilità in Drupal 7 per salvare la sessione variabile.Come salvare una variabile di sessione in drupal 7?
risposta
Puoi provare questo.
function lists_session($key, $value = NULL) {
static $storage;
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("s_key", "value");
E per recuperare il valore, basta usare:
$myVar = lists_session("s_key");
non ho alcun problema di utilizzare la variabile $ _SESSION in il mio modulo. Tieni a mente di creare una sottochiave unica per i tuoi dati.
$_SESSION['mydata'] = array(of your data);
Vorrei avere accesso alle variabili di sessione in una pagina php. Questa pagina è disponibile sul mio sito web Drupal con il modulo lightbox2. E ho bisogno di usare le variabili di sessione per comunicare tra queste pagine. Quindi, il codice è: $ _SESSION ['background_menu'] = 'giallo'; E nella mia pagina php: echo $ _SESSION ['background_menu']?> Ho anche il session_start ma non funziona. Aiuto :) – user785975
Il bootstrap Drupal farà il session_start. Quindi come funziona il tuo codice php. È un modulo drupal o hai script php standalone? – Kristoffer
è uno script php – user785975
Ricordarsi di serializzare i dati come array, obj ... prima di salvare in sessione. $ arr = array(); $ _SESSION ['mysession'] = serialize ($ arr);
Abbiamo anche bisogno di un session_start o di uno già esistente in drupal? – pal4life
Puoi usare ['drupal_session_start()'] (https://api.drupal.org/api/drupal/includes!session.inc/function/drupal_session_start/7). Avvierà la sessione se non è già stata avviata. –
Non dovresti aver bisogno di chiamare '' 'drupal_session_start()' ''. Non appena i dati vengono aggiunti a '' '$ _SESSION''', Drupal salverà quella sessione alla fine della richiesta. Se devi chiamare '' 'drupal_session_start()' '' direttamente allora qualcosa non va. – greggles