it-swarm-eu.dev

Jak uložím data relace pro anonymní uživatele?

V mém posledním projektu Drupal 6) jsem uložil data pomocí kódu podobného následujícímu:

$_SESSION['xxx'] = serialize($data);

V Drupal 7) to nefunguje.

Jak mám uložit data relace pro anonymní uživatele v Drupal 7?

20
vitaly.batonov

Je to proto, že drupal uložit relaci s klíčem, to znamená, že byste měli něco udělat)

  $_SESSION['yourkey']['xxx'] = serialize($data);

Můžete to zkusit.

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];
}

Chcete-li tedy uložit proměnnou v relaci:

lists_session("xxx", serialize($data));

K získání hodnoty stačí použít:

$myVar = lists_session("xxx");

a také proto, že MOLOT zmiňuje někdy relace, která není anonymní pro uživatele, pak byste měli drupal_session_start() ručně.

4
Yusef

Drupal 7 někdy automaticky nespustí relace pro anonymní uživatele. Chcete-li pro ně použít relace, možná budete muset vynutit relaci začínající drupal_session_start , abyste mohli používat $_SESSION.

2
Mołot

Podle dokumentů , to je vše, co byste měli udělat.

Což znamená, že došlo buď k chybě, nebo jsou vaše stránky ukládány do mezipaměti pro uživatele, takže data relace se nečtou. Nejprve zkontroluji vaše nastavení ukládání do mezipaměti.

2
Jeremy French

Po uložení dat podle následujících pokynů:

$_SESSION['xxx'] = serialize($data);

Potřebujete další funkci:

drupal_session_start();

Vzhledem k tomu, že tabulka Session potřebuje záznam s id = 0, můžete ručně vložit záznam s id = 0.

1
Tony Mao

vytvořit uživatele s uid = 0 v tabulce uživatelů, protože drupal vždy používá tento uid pro anonymní uživatele

0
sqzaman