2010-01-04 12 views

उत्तर

17

यह बुरा अभ्यास है, लेकिन अंतरिक्ष की वजह से नहीं।

// file foo.php 
$_SESSION['stuff to keep'] = 42; 

// file bar.php 
if ($_SESSION['stufft o keep'] == 42) frobnicate(); 

यहाँ, अपने कोड चुपचाप दुर्व्यवहार कर रहा है, और बग कुछ समय लग सकता पाया जा सकता है। अच्छा अभ्यास इस तरह के एक वर्ग निरंतर रूप में एक PHP लागू होने वाली नाम, उपयोग करने के लिए है:

$_SESSION[Stuff::TO_KEEP] = 42; 

if($_SESSION[Stuff::TOO_KEEP] == 42) 
// error: no constant TOO_KEEP in class Stuff 

आप तो आप दिलचस्प है या पढ़ने योग्य लगता है किसी भी निरंतर है कि निरंतर परिभाषित कर सकते हैं, इस तरह के "stuff to keep" (अंतराल के साथ)। बेशक, extract() और object पर कास्टिंग अब और काम नहीं करेगा, लेकिन आपको अपने सत्र के साथ ऐसा नहीं करना चाहिए।

सत्र कुंजी में उपयोगकर्ता द्वारा दर्ज टेक्स्ट को अनुमति देना, ज़ाहिर है, एक स्पष्ट सुरक्षा गलती है।

+0

कार्य करता है: http://ideone.com/4OYl1B ऐसा नहीं है: http: // ideone.com/51uC5D – Prasanth

3

यह एक समस्या का कारण होगा नहीं, लेकिन सरणी कुंजी आमतौर पर चर नाम तो एक ही विचार

0

मेरी राय में अनावश्यक खाली स्थान के जोड़ने की तरह लगता है के साथ चुना जाना चाहिए की तरह माना जाता है ... मैं आमतौर पर उपयोग नहीं करते रिक्त स्थान। यदि आप करते हैं, तो सुनिश्चित करें कि आप सरणी कुंजी उद्धृत करते हैं।

8

आप ऐसा कर सकते हैं, यह काम करेगा - और अगर मैं आमतौर पर ऐसा नहीं करता हूं जब मैं अपने हाथों की "हाथ से" सेट करता हूं, तो कभी-कभी ऐसा होता है जब मुझे फ़ाइल से चाबियाँ मिलती हैं (उदाहरण के लिए), और मुझे इसके साथ कोई समस्या नहीं है।

यदि आप extract फ़ंक्शंस का उपयोग कर रहे हैं, तो शायद इससे कोई समस्या हो सकती है। यदि यह उनके नामों में रिक्त स्थान के साथ चर बनाता है (यह नहीं पता कि यह क्या होगा) यह आपके चरों तक पहुंचने के लिए (लेकिन असंभव नहीं) मुश्किल होगा।

+0

+1 अच्छा बिंदु - निकालने से एक त्रुटि (चेतावनी?) फेंक देगी यदि इसे एक सरणी निकालने के लिए कहा जाता है जिसका अमान्य नाम कुंजी –

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