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?
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:
Çü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 .
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.
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
.