익명 사용자의 세션 데이터를 어떻게 저장합니까?


20

Drupal 6의 마지막 프로젝트에서 다음 코드와 유사한 코드를 사용하여 데이터를 저장했습니다.

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

Drupal 7에서는 작동하지 않습니다.

Drupal 7에서 익명 사용자의 세션 데이터를 어떻게 저장해야합니까?

답변:


4

drupal은 키로 세션을 저장하기 때문에 다음과 같은 작업을 수행해야합니다.

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

당신은 이것을 시도 할 수 있습니다.

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

따라서 세션에서 변수를 저장하려면

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

그리고 값을 검색하려면 다음을 사용하십시오.

$myVar = lists_session("xxx");

또한 MOLOT에서 언급 한 것처럼 세션은 때때로 익명 사용자를 대상으로하지 않았으며 drupal_session_start()수동으로해야합니다.


2

docs에 따르면 , 이것이 당신이해야 할 전부입니다.

즉, 버그가 있거나 페이지가 익명 사용자를 위해 캐시되어 세션 데이터를 읽지 못하고 있음을 의미합니다. 첫 번째 인스턴스에서 캐싱 설정을 확인하겠습니다.


감사. 아마도 이것은 버그입니다. 내가 사용하기로 결정 때까지하지만 session_api
vitaly.batonov

@ vitaly.batonov session_api를 사용하여 문제를 해결 한 방법에 대해 자세히 설명 할 수 있습니까?
lathomas64

2

Drupal 7은 때때로 익명 사용자에 대한 세션을 자동으로 시작하지 않습니다. 세션을 사용하려면 drupal_session_start 로 세션을 시작 하여 사용할 수 있도록해야합니다 $_SESSION.


1
Drupal에 알리는 방법이 있습니까? 익명 사용자를위한 세션을 항상 시작합니까?

1

다음을 수행하여 데이터를 저장 한 후 :

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

다른 기능이 필요합니다.

drupal_session_start();

세션 테이블에 id = 0 인 레코드가 필요하기 때문에 id = 0 인 레코드를 수동으로 삽입 할 수 있습니다.


0

drupal은 항상 익명 사용자에 대해 해당 uid를 사용하므로 users 테이블에서 uid = 0으로 사용자를 작성하십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.