2010-08-01 13 views
6

मैं एक कॉन्फ़िगर फ़ाइल के साथ काम कर रहा हूं जिसे मैंने उपयोगकर्ताओं को स्टोर करने के लिए बनाया है। यह निश्चित रूप से कॉन्फ़िगर नहीं किया गया था, लेकिन यह एक बहुत छोटा एप्लीकेशन है और मुझे लगता है कि यह एक अच्छा समाधान होगा।कोडनिर्देशक में कॉन्फ़िगर करने के लिए एक सरणी लिखें?

मेरे सरणी इस तरह दिखता है:

$config['users'] = array(array('username' => 'username', 'password' => 'password')); 

यह अच्छी तरह से काम करता है। मैं जानकारी को त्वरित और आसान पुनर्प्राप्त कर सकता हूं। लेकिन, अगर मैं कॉन्फ़िग फ़ाइल के लिए एक नई सरणी (एक नया उपयोगकर्ता) लिखने की कोशिश है कि मैं इस त्रुटि मिलती है: अवैध में टाइप ऑफसेट isset या खाली

मैं $this->config->item('users', array('username' =>....)) जो सरणियों का समर्थन करने के प्रकट नहीं होता है उपयोग कर रहा हूँ।

मैं अपने कॉन्फ़िगरेशन चर के लिए सरणी कैसे लिख सकता हूं? क्या कोई और तरीका है?

संपादित करें: ठीक है, त्रुटि निश्चित है फ्रिस्की द्वारा दिए गए उत्तर के लिए धन्यवाद। मैं अपने सिर में इतना यकीन कर रहा था कि मैं config-> item() का उपयोग कर सकता हूं कि मैंने मैन्युअल रूप से config-> set_item() के लिए मैन्युअल जांच नहीं की है ... लेकिन, यह अभी भी काम नहीं करता है। यहाँ विशिष्ट कोड है:

 $users = $this->config->item('users'); 
     array_push($users, array('username' => $this->input->post('username'), 'password' => $this->input->post('password'))); 
     $this->config->set_item('users', json_encode($users)); 
     echo json_encode($users); 

इस कोड अजाक्स के माध्यम से कहा जाता है, और मैं अगर यह मान सही हैं देखने के लिए एक चेतावनी बॉक्स है। वो हैं। और जैसा कि आप देख सकते हैं, मैंने इसे सरणी के बजाय जेसन के रूप में भी संग्रहीत करने का प्रयास किया है .... लेकिन यह भी काम नहीं करता है। कृपया मदद करें?

धन्यवाद

+3

जो भी आपके आवेदन का दायरा है, मैं अभी भी उपयोगकर्ता नाम और पासवर्ड स्टोर करने के लिए कॉन्फ़िगरेशन फ़ाइल का उपयोग करने की सलाह दूंगा। सुरक्षा आकार से कहीं ज्यादा बड़ी चिंता है। उस ने कहा, यदि आप अभी भी इसके लिए एक कॉन्फ़िगरेशन फ़ाइल का उपयोग करना चाहते हैं, तो बस सुनिश्चित करें कि आप सादा पाठ में पासवर्ड संग्रहीत नहीं कर रहे हैं और आपने अपनी कॉन्फ़िगरेशन फ़ाइल पर उचित अनुमतियां सेट की हैं। – BoltClock

+0

मैं, चिंता मत करो। :) यह आंशिक रूप से भी है क्योंकि मुझे नहीं पता कि इसे अलग तरीके से कैसे किया जाए। मैं इसे MySQL के साथ कर सकता हूं, लेकिन मैंने पहले कभी भी फाइल स्टोरेज के साथ काम नहीं किया है और मैं एक डीबी शामिल नहीं करना चाहता हूं। –

उत्तर

5

आप एक config आइटम, नहीं 'आइटम' लिखने के लिए 'set_item' विधि का उपयोग करने के लिए है:

$this->config->set_item('item_name', 'item_value'); 

या आपके मामले में:

$this->config->set_item('users', array(...)); 
+0

आप इस समारोह के बारे में सही थे, मैंने गलत समझा।लेकिन यह अभी भी काम नहीं करता है (मैंने प्रश्न में और विवरण जोड़े हैं)। –

0

पुराना सवाल, लेकिन मेरे पास एक समान सवाल था। तो:

And as you can see, I've tried storing it as json instead of array as well.... but that doesn't work either.

आप बंद टिप है कि कुछ और गलत था पहली बात किया जाना चाहिए था कि - JSON सिर्फ एक श्रृंखला है। अगर आप इसे स्टोर करने में सक्षम नहीं थे, तो कुछ और गलत था। वास्तव में आपका कोड उलझन में है और थोड़ा संदिग्ध है, आप JSON (एक स्ट्रिंग) संग्रहीत कर रहे हैं लेकिन आप इसे एक्सेस कर रहे हैं जैसे कि यह एक सरणी है (कहीं भी json_decode नहीं)।

वैसे भी, मैं एक साधारण परीक्षण सुझाव देंगे:

$this->config->set_item('the_array', array("I'm", "an", "array")); 
echo 'The config array: '.print_r($this->config->item('the_array'), true); 

मैं एक निश्चित जवाब के साथ अपने प्रश्न को देखने के बाद अपने आप को इस की कोशिश कर रहा समाप्त हो गया - CodeIgniter 1.7 में ठीक काम करता है। तो जवाब है, हाँ, विन्यास आइटम के रूप में सरणी स्टोर कर सकते हैं। कोई JSON-एन्कोडिंग आवश्यक नहीं है।

चीयर्स

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