2013-01-02 20 views
5

लॉगिन के बाद कोडनिर्देशक में मैं सत्र में सभी डेटा संग्रहीत कर रहा हूं और फोरम नियंत्रक को रीडायरेक्ट कर रहा हूं। लेकिन मैं फोरम नियंत्रक में सभी मूल्य खो रहा हूँ।कोडइग्निटर: लॉगिन के बाद सत्र डेटा खोना

जब मैं सत्र से कुछ मूल्यों को कम करने के बाद कोशिश करता हूं तो यह पूरी तरह से काम करता है।

अब मेरा प्रश्न है - यह क्यों हो रहा है? कोडइग्निटर में सत्र में स्टोर करने के लिए मूल्यों की कोई ऊपरी सीमा है?

यहां तक ​​कि मुझे लगता है मैं

redirect('forum', 'refresh'); 

की तरह पाया खोजने का प्रयास करते लेकिन यह काम नहीं कर रहा। और मेरी परियोजना आधा विकसित है इसलिए मैं codeignter के "PHP मूल सत्र वर्ग" का उपयोग नहीं कर सकता।

+0

आप देशी सत्र कक्षा का उपयोग कर सकते हैं, यह असीमित रूप से एकीकृत करता है। आपको कक्षा में अधिकतम एक विधि जोड़नी पड़ सकती है। (मैंने कम से कम किया था) – jadkik94

+0

@ jadkik94: जैसा कि मैंने पहले ही उल्लेख किया है कि मैं मूल सत्र वर्ग का उपयोग नहीं कर सकता क्योंकि मैंने पहले से ही अधिकांश मॉड्यूल विकसित किए हैं और प्रत्येक फाइल को नहीं बदल सकते हैं और बदल सकते हैं। –

+0

डेटाबेस में सत्रों को सहेजने के लिए अपनी कॉन्फ़िगरेशन चालू करें। अपने समय और प्रयासों के लिए धन्यवाद http://ellislab.com/codeigniter/user-guide/libraries/sessions.html – mallix

उत्तर

1

स्पष्टीकरण: करके डिफ़ॉल्ट CodeIgniter एक कुकी है, जो एक ऊपरी ब्राउज़र के आधार पर आकार में 2KB-4KB की सीमा होती है में सत्र डेटा। यदि आप सत्र में 4KB से अधिक डेटा स्टोर करने का प्रयास कर रहे हैं तो आप समस्याओं में भागना शुरू कर देंगे।

समाधान: सबसे आसान समाधान एक मेज की स्थापना, और config के एक जोड़े को बदलने की DB.it के एक मामले में सत्र के भंडारण के लिए प्रक्रिया में DB.The CodeIgniter session documentation विवरण सत्र विवरण स्टोर करने के लिए है मापदंडों। भंडारण सत्र-

CREATE TABLE IF NOT EXISTS `ci_sessions` (
session_id varchar(40) DEFAULT '0' NOT NULL, 
ip_address varchar(45) DEFAULT '0' NOT NULL, 
user_agent varchar(120) NOT NULL, 
last_activity int(10) unsigned DEFAULT 0 NOT NULL, 
user_data text NOT NULL, 
PRIMARY KEY (session_id), 
KEY `last_activity_idx` (`last_activity`) 
); 

के लिए

$config['sess_use_database'] = TRUE; 
$config['sess_table_name'] = 'ci_sessions'; 

बनाया नया टेबल: नीचे परिवर्तनों आप कॉन्फ़िग फ़ाइल (आवेदन/config/config.php) में do- करने के लिए चर नीचे

अद्यतन की आवश्यकता है अधिक जानकारी के लिए: http://goo.gl/YPllj0

7

डिफ़ॉल्ट रूप से CodeIgniter एक कुकी में सत्र डेटा संग्रहीत करता है, जिसमें आकार में 4KB की ऊपरी सीमा होती है। यदि आप सत्र में 4KB से अधिक डेटा स्टोर करने का प्रयास कर रहे हैं तो आप समस्याओं में भागना शुरू कर देंगे।

सबसे आसान समाधान शायद डीबी में सत्र विवरण स्टोर करना है। CodeIgniter session documentation डीबी में सत्र को संग्रहीत करने की प्रक्रिया का विवरण देता है - यह एक टेबल स्थापित करने और कुछ कॉन्फ़िगरेशन पैरामीटर बदलने की बात है।

+0

देखें। –

4

सीआई सत्र वैकल्पिक एन्क्रिप्शन के साथ कुकी में सबकुछ स्टोर करता है। तो apparently उस सीमा तक पहुंचना संभव है। ऐसा है कि आप 2K बाइट्स की तरह कुछ स्टोर करते हैं; अगर यह सिर्फ लॉगिन जानकारी है, तो यह कोई समस्या नहीं होनी चाहिए। यदि आप उस के रूप में कुछ बड़ा उपयोग करते हैं, तो मुझे लगता है कि आपको नहीं करना चाहिए।

वैसे भी, मुझे नहीं लगता कि यह समस्या है, क्योंकि मुझे एक ही समस्या थी (मुझे इसका सटीक कारण याद नहीं है)। मैंने पाया समाधान मूल PHP सत्र वर्ग का उपयोग करना था, और इसमें एक विधि जोड़ा: all_userdata या जिसे भी कहा जाता था। इसके साथ, सब कुछ सामान्य सत्र के साथ काम करता था (कुछ भी बदलने की जरूरत नहीं है)।

+0

आपके समय और प्रयासों के लिए धन्यवाद। –

+0

@ jadkik94 मुझे पता है कि आपने कुछ समय पहले ऐसा किया था, लेकिन मूल PHP सत्र वर्ग का उपयोग करने से पहले, क्या आपने सीआई सत्र डीबी तालिका (स्वीकृत उत्तर) का उपयोग करने का प्रयास किया था? यदि हां, तो क्या आप समझ गए कि यह क्यों विफल हुआ? मेरे मामले में यह अभी भी सत्र को यादृच्छिक रूप से खो देता है। क्या आप जोड़े गए all_userdata विधि का वर्णन कर सकते हैं? – Armfoot

+1

@ आर्मफुट मुझे नहीं लगता कि मैंने डेटाबेस सत्र का प्रयास किया था। All_userdara विधि ने अभी '$ _SESSION' सरणी लौटा दी है। वैसे भी मुझे लगता है कि सीआई 3.0 में उन्होंने पूरे सत्र वर्ग में सुधार किया। यदि आप नवीनतम संस्करण का उपयोग कर रहे हैं तो [यहां] (http://www.codeigniter.com/user_guide/libraries/sessions.html#session-drivers) देखें। – jadkik94

0

मेरे मामले में, कुछ परीक्षणों के बाद (स्थानीयहोस्ट में https और http के साथ) त्रुटि उस समस्या के लिए आती है और $ config ['cookie_s' ecure '], तो आप कॉन्फ़िगरेशन में बदलने का प्रयास कर सकते हैं।PHP:

$config['cookie_secure'] = FALSE; // if is not under https, or true if you use https 

चीयर्स!

+1

धन्यवाद !! 0 तक उभरा – Dug

संबंधित मुद्दे