Anonim kullanıcılar için oturum verilerini nasıl kaydederim?


20

Drupal 6 için son projemde, aşağıdakine benzer bir kod kullanarak verileri kaydettim:

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

Drupal 7'de işe yaramıyor.

Drupal 7'de anonim kullanıcılar için oturum verilerini nasıl kaydetmeliyim?

Yanıtlar:


4

Çünkü anahtar ile drupal kaydetme oturumu, bu demek oluyor ki

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

Bunu deneyebilirsiniz.

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

Yani, bir değişkeni Oturumda kaydetmek için:

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

Ve değeri almak için şunu kullanın:

$myVar = lists_session("xxx");

ve MOLOT bazen anonim kullanıcılar için oturum açlıktan bahsediyorsa, o zaman drupal_session_start()manuel olarak yapmanız gerekir .


2

Dokümanlara göre , yapmanız gereken tek şey bu.

Bu, bir hata olduğu veya sayfalarınızın anon kullanıcıları için önbelleğe alındığı anlamına gelir, böylece oturum verileri okunmaz. İlk olarak önbellekleme ayarlarınızı kontrol ederdim.


Teşekkürler. Belki de bu bir hatadır. ama bunu kullanmaya karar verene kadar session_api
vitaly.batonov

@ vitaly.batonov session_api'yi sorununuzu çözmek için nasıl kullandığınızı açıklayabilir misiniz?
lathomas64

2

Drupal 7 bazen anonim kullanıcılar için oturumları otomatik olarak başlatmaz. Onlar için oturumlarını kullanmak için, ile başladı kuvvet oturumu gerekebilir drupal_session_start kullanmak mümkün $_SESSION.


1
Drupal'a, HER ZAMAN anonim kullanıcılar için bir oturum başlatmanın bir yolu var mı?

1

Aşağıdakileri yaparak verileri kaydettikten sonra:

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

Başka bir fonksiyona ihtiyacınız var:

drupal_session_start();

Oturum tablosunun id = 0 olan bir kayda ihtiyacı olması nedeniyle, id = 0 olan bir kaydı el ile ekleyebilirsiniz.


0

kullanıcı tablosunda uid = 0 olan bir kullanıcı oluşturun çünkü drupal anonim kullanıcılar için her zaman bu uid'i kullanır

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.