अनाम उपयोगकर्ताओं के लिए मैं सत्र डेटा कैसे बचा सकता हूं?


20

Drupal 6 के लिए मेरी आखिरी परियोजना में, मैंने निम्नलिखित के समान कोड का उपयोग करके डेटा को बचाया:

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

Drupal 7 में, यह काम नहीं करता है।

मुझे Drupal 7 में अनाम उपयोगकर्ताओं के लिए सत्र डेटा को कैसे सहेजना चाहिए?

जवाबों:


4

यह क्योंकि ड्रुपल सेव सेशन के साथ कुंजी है, इसका मतलब है कि आपको कुछ करना चाहिए

  $_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

डॉक्स के अनुसार , आपको बस इतना करना चाहिए।

जिसका अर्थ है कि या तो एक बग है, या आपके पृष्ठों को अननोन उपयोगकर्ताओं के लिए कैश किया जा रहा है, इसलिए सत्र डेटा नहीं पढ़ा जा रहा है। मैं पहले उदाहरण में आपकी कैशिंग सेटिंग की जाँच करूँगा।


धन्यवाद। शायद यह एक बग है। लेकिन यह जब तक मैं उपयोग करने का फैसला session_api
vitaly.batonov

@ vitaly.batonov आप इस बारे में विस्तार से बता सकते हैं कि आपने अपनी समस्या को हल करने के लिए session_api का उपयोग कैसे किया?
लथोमास ६४

2

Drupal 7 कभी-कभी गुमनाम उपयोगकर्ताओं के लिए सत्र शुरू नहीं करता है। उनके लिए सत्रों का उपयोग करने के लिए, आपको सत्र का उपयोग करने के लिए सक्षम होने के लिए ड्रुपल_ सत्र_स्टार्ट से शुरू करने की आवश्यकता हो सकती है $_SESSION


1
क्या Drupal को बताने का एक तरीका है, ALWAYS अनाम उपयोगकर्ताओं के लिए एक सत्र शुरू करता है?

1

आपके द्वारा निम्नलिखित डेटा सहेजने के बाद:

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

एक और कार्य की आवश्यकता है:

drupal_session_start();

सत्र तालिका के कारण आईडी = 0 के साथ एक रिकॉर्ड की आवश्यकता होती है, आप मैन्युअल रूप से आईडी = 0 के साथ एक रिकॉर्ड सम्मिलित कर सकते हैं।


0

उपयोगकर्ता तालिका में यूआईडी = 0 के साथ एक उपयोगकर्ता बनाएं क्योंकि ड्रुपल हमेशा अनाम उपयोगकर्ताओं के लिए उस यूआईडी का उपयोग करता है

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.