Drupal 6 के लिए मेरी आखिरी परियोजना में, मैंने निम्नलिखित के समान कोड का उपयोग करके डेटा को बचाया:
$_SESSION['xxx'] = serialize($data);
Drupal 7 में, यह काम नहीं करता है।
मुझे Drupal 7 में अनाम उपयोगकर्ताओं के लिए सत्र डेटा को कैसे सहेजना चाहिए?
Drupal 6 के लिए मेरी आखिरी परियोजना में, मैंने निम्नलिखित के समान कोड का उपयोग करके डेटा को बचाया:
$_SESSION['xxx'] = serialize($data);
Drupal 7 में, यह काम नहीं करता है।
मुझे Drupal 7 में अनाम उपयोगकर्ताओं के लिए सत्र डेटा को कैसे सहेजना चाहिए?
जवाबों:
यह क्योंकि ड्रुपल सेव सेशन के साथ कुंजी है, इसका मतलब है कि आपको कुछ करना चाहिए
$_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()मैन्युअल रूप से करना चाहिए ।
डॉक्स के अनुसार , आपको बस इतना करना चाहिए।
जिसका अर्थ है कि या तो एक बग है, या आपके पृष्ठों को अननोन उपयोगकर्ताओं के लिए कैश किया जा रहा है, इसलिए सत्र डेटा नहीं पढ़ा जा रहा है। मैं पहले उदाहरण में आपकी कैशिंग सेटिंग की जाँच करूँगा।
Drupal 7 कभी-कभी गुमनाम उपयोगकर्ताओं के लिए सत्र शुरू नहीं करता है। उनके लिए सत्रों का उपयोग करने के लिए, आपको सत्र का उपयोग करने के लिए सक्षम होने के लिए ड्रुपल_ सत्र_स्टार्ट से शुरू करने की आवश्यकता हो सकती है $_SESSION।