2012-11-29 13 views
20

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

+2

हो सकता है कि आप उसे अपने पहले क्यों वह/वह इतना सोचता है पूछना चाहिए/... – Christophe

+0

यह केवल वास्तव में "बुरा व्यवहार" अगर आप (उपयोगकर्ता से कुछ छिपाने के लिए आप अपने ईमेल पते प्रस्तुत करने के लिए जा रहे हैं की तरह कोशिश कर रहे हैं उन्हें बताए बिना HTTP पर)। यदि उपयुक्त हो तो छिपे हुए फ़ील्ड का उपयोग करने में कुछ भी गलत नहीं है। –

+11

बुरा अभ्यास नहीं, सामान्य अभ्यास।कार्यान्वयन के आधार पर, आपके पास पहुंच के मुद्दे हो सकते हैं, लेकिन मैं सुझाव दूंगा कि आप अपने सहयोगी को अनदेखा करें या उससे अधिक जानकारी प्राप्त करें। –

उत्तर

2

एचटीएमएल डोम में जावास्क्रिप्ट मान को स्टोर करना आम तौर पर एक बुरा अभ्यास है। आपको अपने जावास्क्रिप्ट वातावरण में संग्रहीत सूची बनाने की कोशिश करनी चाहिए।

window.myList = new Array(); 

मैं तुम्हें Underscore.js या यहाँ तक कि Backbone.js की तरह कुछ का उपयोग करने के लिए जब आप सामान का एक बहुत है सलाह देते हैं।

यदि आप केवल सबमिट पर इन डेटा का उपयोग करते हैं, तो आपका केस कानूनी लगता है।

+0

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

3

यह एक बहुत ही आम प्रथा है। आपके मामले में एकमात्र मुद्दा जो मैं सोच सकता हूं वह यह है कि यदि आपके आगंतुक के पास जावास्क्रिप्ट अक्षम है तो यह टूट जाएगा, इसलिए आप फॉलबैक चाहते हैं।

4

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

3

आप फ़ॉर्म सबमिट करना चाहते हैं और कुछ सरल मान देता है जो दृश्य प्रपत्र फ़ील्ड्स में शामिल नहीं हैं पारित करने के लिए की जरूरत है, तो एक छिपी हुई फ़ील्ड शायद ऐसा करने का सबसे प्राचीन, सबसे विश्वसनीय, और स्पष्ट तरीका है।

  1. अनुपयोगी:

    विकल्पों पर विचार कुछ भी छिपा पारित न करें।

  2. गरीब: एएसपी.Net व्यूस्टेट की तरह एब्स्ट्रैक्शन, जो किसी भी छिपे हुए फ़ील्ड का उपयोग करता है लेकिन अनुरोध मॉडल को प्रदूषित करता है (और जब तक आप सावधान नहीं हैं तब तक अनियंत्रित डेटा का एक गुच्छा जोड़ सकते हैं - और अधिकांश लोग नहीं हैं)।

  3. बीएडी: क्वेरी स्ट्रिंग पर सभी फॉर्म मान पास करें। यह आमतौर पर गैर-भरोसेमंद होता है और यह कमजोर हानिकारक हो सकता है (उपयोगकर्ता एक क्वेरीस्ट्रिंग बुक करता है जो एक अप्रत्याशित कार्रवाई करता है)।

  4. शायद: AJAX का उपयोग करके मैन्युअल रूप से POST मान। यह एक बहुत ही वैध कार्यान्वयन हो सकता है, यह मानते हुए कि आप केवल एसिंक ऑपरेशन करना चाहते हैं।

  5. हो सकता है कि: पूर्ण गोल यात्रा जहां सर्वर परिवर्तन संभालती है (एक ही रास्ता जावास्क्रिप्ट के बिना उपयोगकर्ताओं का समर्थन हो सकता है)।

0

सुरक्षित जानकारी के लिए छिपे हुए फ़ील्ड का उपयोग करना बुरा अभ्यास है। जब कोई सुरक्षा मुद्दा है, यह छिपा फ़ील्ड का उपयोग करने में आम तौर पर ठीक है।

+4

आपको कारण और संदर्भ देना चाहिए। – valentinas

+0

उन्हें एन्क्रिप्ट करने से आप में क्या रोकें? यह कोई तर्क नहीं है क्योंकि किसी भी नियंत्रण या क्षेत्र पर पृष्ठ पर किसी भी डेटा के लिए यह वही समस्या है। – Aristos

+0

यह स्टैक ओवरफ्लो का मानक नहीं है जिसे आपको संदर्भ प्रदान करने की आवश्यकता है। तो valentinas टिप्पणी निष्पक्ष रूप से झूठी है। दो और चीजें: मैं शून्य परिकल्पना का बचाव कर रहा हूं कि कोई समस्या नहीं है इसलिए साबित करना मुश्किल है। इसके अलावा, यह एक आम-संवेदी प्रकार का मुद्दा है। अब, छिपे हुए फ़ील्ड का उपयोग करना गलत नहीं है; वे एक कारण के लिए मौजूद हैं। वे एक बड़ी सुविधा हैं और वे तब उपयोग करने जा रहे हैं जब अगले अनुरोध की स्थिति उस विशेष पृष्ठ में निहित है, जिस पर आप हैं। (उदाहरण के लिए, एक सूची छंटनी)। – Joe

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