Drupal 6의 마지막 프로젝트에서 다음 코드와 유사한 코드를 사용하여 데이터를 저장했습니다.
$_SESSION['xxx'] = serialize($data);
Drupal 7에서는 작동하지 않습니다.
Drupal 7에서 익명 사용자의 세션 데이터를 어떻게 저장해야합니까?
Drupal 6의 마지막 프로젝트에서 다음 코드와 유사한 코드를 사용하여 데이터를 저장했습니다.
$_SESSION['xxx'] = serialize($data);
Drupal 7에서는 작동하지 않습니다.
Drupal 7에서 익명 사용자의 세션 데이터를 어떻게 저장해야합니까?
답변:
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()
수동으로해야합니다.
docs에 따르면 , 이것이 당신이해야 할 전부입니다.
즉, 버그가 있거나 페이지가 익명 사용자를 위해 캐시되어 세션 데이터를 읽지 못하고 있음을 의미합니다. 첫 번째 인스턴스에서 캐싱 설정을 확인하겠습니다.
Drupal 7은 때때로 익명 사용자에 대한 세션을 자동으로 시작하지 않습니다. 세션을 사용하려면 drupal_session_start 로 세션을 시작 하여 사용할 수 있도록해야합니다 $_SESSION
.