एचटीएमएल 5 कांस्टीट्यूशन वैलिडेशन में
इंटरएक्टिव वेबसाइटों और अनुप्रयोगों की कल्पना ऐसे रूपों के बिना नहीं की जा सकती जो हमें सक्षम बनाते हैं हमारे उपयोगकर्ताओं के साथ कनेक्ट करें, और करने के लिए डेटा प्राप्त करें हमें उनके साथ सुचारू लेनदेन को सुरक्षित करने की आवश्यकता है। हमें जरूरत है वैध उपयोगकर्ता इनपुट, हालाँकि हमें इसे एक तरह से हासिल करने की आवश्यकता है निराश नहीं करता है हमारे उपयोगकर्ता बहुत अधिक हैं.
यद्यपि हम स्मार्ट रूप से चुने गए यूएक्स डिज़ाइन पैटर्न के साथ अपने रूपों की उपयोगिता में सुधार कर सकते हैं, एचटीएमएल 5 में बाधा सत्यापन के लिए एक देशी तंत्र भी है जो हमें अनुमति देता है सही सामने में इनपुट त्रुटियों को पकड़ने.
इस पोस्ट में, हम पर ध्यान केंद्रित करेंगे ब्राउज़र-प्रदत्त बाधा सत्यापन, और कैसे डेवलपर्स विकास कर सकते हैं देखो HTML5 का उपयोग करके सुरक्षित उपयोगकर्ता इनपुट सुरक्षित करें.
हमें फ्रंट-एंड इनपुट वैलिडेशन की आवश्यकता क्यों है
इनपुट सत्यापन दो मुख्य लक्ष्य हैं। हमें जो सामग्री मिलनी चाहिए वह है:
1. उपयोगी
ज़रुरत है प्रयोग करने योग्य डेटा जिसके साथ हम काम कर सकते हैं. हमें लोगों को प्रवेश करने की जरूरत है सही प्रारूप में यथार्थवादी डेटा. उदाहरण के लिए, आज कोई भी जीवित नहीं है जो 200 साल पहले पैदा हुआ था। इस तरह से डेटा प्राप्त करना पहली बार में मज़ेदार लग सकता है, लेकिन लंबे समय तक यह कष्टप्रद है, और बेकार डेटा के साथ हमारे डेटाबेस को पॉप्युलेट करता है.
2. सुरक्षित
सुरक्षा का जिक्र करते समय, इसका मतलब है कि हमें इसकी जरूरत है दुर्भावनापूर्ण सामग्री के इंजेक्शन को रोकें - चाहे जानबूझकर या दुर्घटना से.
उपयोगिता (उचित डेटा प्राप्त करना) प्राप्त की जा सकती है केवल क्लाइंट की तरफ, बैकएंड टीम इससे बहुत मदद नहीं कर सकती। प्राप्त करना सुरक्षा, सामने और बैकएंड डेवलपर्स को एक साथ काम करने की आवश्यकता है.
यदि डेवलपर्स ठीक से क्लाइंट साइड पर इनपुट को मान्य करते हैं, तो बैकएंड टीम को बहुत कम कमजोरियों से निपटना होगा. हैकिंग (एक साइट) अक्सर होती है अतिरिक्त डेटा जमा करना, या गलत प्रारूप में डेटा. डेवलपर्स इन जैसे सुरक्षा छिद्रों से लड़ सकते हैं, सफलतापूर्वक सामने के छोर से लड़ सकते हैं.
उदाहरण के लिए, यह PHP सुरक्षा गाइड ग्राहक की ओर से हमारे द्वारा की जाने वाली हर चीज की जांच करने की सिफारिश करता है। वे कई उदाहरण देकर फ्रंटएंड इनपुट सत्यापन के महत्व पर बल देते हैं, जैसे:
"इनपुट सत्यापन अत्यंत प्रतिबंधित मूल्यों के साथ सबसे अच्छा काम करता है, जैसे कि जब कुछ पूर्णांक, या अल्फ़ान्यूमेरिक स्ट्रिंग या HTTP URL होना चाहिए।"
सीमांत इनपुट सत्यापन में, हमारा काम है उचित बाधाओं को लागू करें उपयोगकर्ता इनपुट पर HTML5 की बाधा सत्यापन सुविधा हमें ऐसा करने का साधन प्रदान करती है.
एचटीएमएल 5 बाधा सत्यापन
HTML5 से पहले, सीमांत डेवलपर्स सीमित थे जावास्क्रिप्ट के साथ उपयोगकर्ता इनपुट को मान्य करना, जो एक थकाऊ और त्रुटि-प्रवण प्रक्रिया थी। क्लाइंट-साइड फ़ॉर्म सत्यापन को बेहतर बनाने के लिए, HTML5 ने एक परिचय दिया है बाधा सत्यापन एल्गोरिथ्म जो आधुनिक ब्राउज़रों में चलता है, और प्रस्तुत इनपुट की वैधता की जाँच करता है.
मूल्यांकन करने के लिए, एल्गोरिथ्म का उपयोग करता है इनपुट तत्वों के सत्यापन से संबंधित गुण, जैसे कि ,
, तथा
. यदि आप जानना चाहते हैं कि ब्राउज़र में कदम दर कदम बाधा कैसे होती है, तो इस व्हाट्सएप डॉक को देखें.
HTML5 की बाधा सत्यापन सुविधा के लिए धन्यवाद, हम सभी को निष्पादित कर सकते हैं मानक इनपुट सत्यापन कार्य क्लाइंट की तरफ जावास्क्रिप्ट के बिना, केवल HTML5 के साथ.
अधिक जटिल सत्यापन-संबंधी कार्य करने के लिए, HTML5 हमें एक प्रदान करता है बाधा सत्यापन जावास्क्रिप्ट एपीआई हम अपनी कस्टम सत्यापन स्क्रिप्ट सेट करने के लिए उपयोग कर सकते हैं.
सिमेंटिक इनपुट प्रकार के साथ मान्य
HTML5 पेश किया है सिमेंटिक इनपुट प्रकार वह - उपयोगकर्ता एजेंटों के लिए तत्व के अर्थ को इंगित करने के अलावा - का भी उपयोग किया जा सकता है उपयोगकर्ता इनपुट को मान्य करें एक निश्चित इनपुट प्रारूप में उपयोगकर्ताओं को सीमित करके.
HTML5 से पहले मौजूद इनपुट प्रकारों के अलावा (टेक्स्ट
, पारण शब्द
, जमा करें
, रीसेट
, रेडियो
, चेकबॉक्स
, बटन
, छिपा हुआ
), हम निम्नलिखित का उपयोग भी कर सकते हैं शब्दार्थ HTML5 इनपुट प्रकार: ईमेल
,टेलीफोन
,यूआरएल
,संख्या
,पहर
,दिनांक
,दिनांक समय
,datetime-स्थानीय
, महीना
,सप्ताह
, रेंज
, खोज
,रंग
.
हम पुराने ब्राउज़रों के साथ सुरक्षित रूप से HTML5 इनपुट प्रकारों का उपयोग कर सकते हैं, क्योंकि वे एक के रूप में व्यवहार करेंगे ब्राउज़र में फ़ील्ड जो उनका समर्थन नहीं करते हैं.
आइए देखें कि उपयोगकर्ता द्वारा गलत इनपुट प्रकार में प्रवेश करने पर क्या होता है। कहें कि हमने निम्नलिखित कोड के साथ एक ईमेल इनपुट फ़ील्ड बनाया है:
जब उपयोगकर्ता एक स्ट्रिंग टाइप करता है जो ईमेल प्रारूप का उपयोग नहीं करता है, तो बाधा सत्यापन एल्गोरिथ्म फॉर्म जमा नहीं करता है, तथा एक त्रुटि संदेश देता है:
एक ही नियम अन्य इनपुट प्रकारों पर भी लागू होता है, उदाहरण के लिए प्रकार = "url"
उपयोगकर्ता केवल एक इनपुट प्रस्तुत कर सकते हैं जो URL प्रारूप का अनुसरण करता है (जैसे प्रोटोकॉल के साथ शुरू होता है, जैसे एचटीटीपी://
या एफ़टीपी: //
).
कुछ इनपुट प्रकार एक डिज़ाइन का उपयोग करते हैं जो उपयोगकर्ताओं को गलत इनपुट प्रारूप दर्ज करने की अनुमति भी नहीं देता है, उदाहरण के लिए रंग
तथा रेंज
.
अगर हम उपयोग करते हैं रंग
इनपुट प्रकार उपयोगकर्ता को या तो रंग बीनने वाले से एक रंग चुनने या डिफ़ॉल्ट काले रंग के साथ रहने के लिए विवश किया जाता है। इनपुट फ़ील्ड है डिजाइन द्वारा विवश, इसलिए यह उपयोगकर्ता की त्रुटि के लिए बहुत मौका नहीं छोड़ता है.
जब यह उपयुक्त हो, तो इसका उपयोग करने पर विचार करने लायक है HTML टैग जो इन विवश-बाय-डिज़ाइन इनपुट प्रकारों के समान काम करता है; यह उपयोगकर्ताओं को ड्रॉपडाउन सूची से चुनने की सुविधा देता है.
HTML5 के सत्यापन गुण का उपयोग करें
सिमेंटिक इनपुट प्रकारों का उपयोग करके उपयोगकर्ताओं को सबमिट करने की अनुमति पर कुछ अड़चनें आती हैं, लेकिन कई मामलों में हम थोड़ा आगे जाना चाहते हैं। यह तब है जब सत्यापन से संबंधित विशेषताएँ का टैग हमारी मदद कर सकता है.
सत्यापन-संबंधी विशेषताएँ कुछ इनपुट प्रकारों से संबंधित हैं (इनका उपयोग नहीं किया जा सकता है सब प्रकार) जिस पर वे आगे बाधा डालते हैं.
1. अपेक्षित
हर तरह से एक वैध इनपुट प्राप्त करने के लिए
अपेक्षित
विशेषता सबसे प्रसिद्ध HTML सत्यापन विशेषता है। यह है बूलियन विशेषता इसका मतलब है कोई मूल्य नहीं लेता है, हमें बस इसे अंदर रखना है टैग यदि हम इसका उपयोग करना चाहते हैं:
यदि उपयोगकर्ता आवश्यक इनपुट फ़ील्ड में एक मान दर्ज करना भूल जाता है, तो ब्राउज़र एक त्रुटि संदेश देता है वह उन्हें मैदान में भरने की चेतावनी देता है, और वे फॉर्म जमा नहीं कर सकते जब तक उन्होंने एक वैध इनपुट प्रदान नहीं किया है। इसलिए यह हमेशा महत्वपूर्ण है नेत्रहीन निशान उपयोगकर्ताओं के लिए आवश्यक फ़ील्ड.
अपेक्षित
विशेषता हो सकती है निम्नलिखित इनपुट प्रकारों के साथ एक साथ उपयोग किया जाता है: टेक्स्ट
, खोज
, यूआरएल
, टेलीफोन
, ईमेल
, पारण शब्द
, दिनांक
, दिनांक समय
, datetime-स्थानीय
, महीना
, सप्ताह
,पहर
, संख्या
, चेकबॉक्स
, रेडियो
, फ़ाइल
, प्लस के साथ तथा
एचटीएमएल टैग.
2. मिनट
, अधिकतम
तथा कदम
संख्या सत्यापन के लिए
मिनट
, अधिकतम
तथा कदम
विशेषताएँ हमें सक्षम बनाती हैं संख्या इनपुट क्षेत्रों पर अड़चनें डालें. वे एक साथ इस्तेमाल किया जा सकता है रेंज
, संख्या
, दिनांक
, महीना
, सप्ताह
, दिनांक समय
, datetime-स्थानीय
, तथा पहर
इनपुट प्रकार.
मिनट
तथा अधिकतम
विशेषताएँ आसानी से एक शानदार तरीका प्रदान करती हैं अनुचित डेटा को बाहर करें. उदाहरण के लिए, नीचे दिए गए उदाहरण से उपयोगकर्ता 18 से 120 के बीच की आयु जमा कर सकते हैं.
जब बाधा सत्यापन एल्गोरिथ्म उपयोगकर्ता इनपुट में से छोटा हो जाता है मिनट
, या इससे बड़ा है अधिकतम
मान, यह इसे बैकएंड तक पहुंचने से रोकता है, और एक त्रुटि संदेश देता है.
कदम
गुण एक संख्यात्मक अंतराल निर्दिष्ट करता है एक संख्यात्मक इनपुट क्षेत्र के कानूनी मूल्यों के बीच। उदाहरण के लिए, यदि हम चाहते हैं कि उपयोगकर्ता केवल लीप वर्ष से ही हमें चुन सकें कदम = "4"
क्षेत्र के लिए विशेषता। नीचे दिए गए उदाहरण में मैंने इस्तेमाल किया संख्या
इनपुट प्रकार, जैसा कि नहीं है type = "वर्ष"
HTML5 में.
पूर्व-निर्धारित बाधाओं के साथ, उपयोगकर्ता केवल 1972 और 2016 के बीच लीप वर्ष से चयन कर सकते हैं यदि वे छोटे-से-तीर का उपयोग करते हैं संख्या
निवेष का प्रकार। वे इनपुट फ़ील्ड में मैन्युअल रूप से एक मान टाइप कर सकते हैं, लेकिन अगर यह बाधाओं को पूरा नहीं करता है, तो ब्राउज़र एक त्रुटि संदेश लौटाएगा.
3. अधिकतम लंबाई
पाठ लंबाई सत्यापन के लिए
अधिकतम लंबाई
विशेषता इसे संभव बनाती है अधिकतम वर्ण लंबाई निर्धारित करें पाठ इनपुट क्षेत्रों के लिए। यह साथ में इस्तेमाल किया जा सकता है टेक्स्ट
, खोज
, यूआरएल
, टेलीफोन
, ईमेल
तथा पारण शब्द
इनपुट प्रकार, और के साथ HTML टैग.
अधिकतम लंबाई
विशेषता फ़ोन नंबर फ़ील्ड के लिए एक उत्कृष्ट समाधान हो सकती है जिसमें कुछ निश्चित वर्णों से अधिक नहीं हो सकता है, या संपर्क फ़ॉर्म के लिए जहां हम उपयोगकर्ताओं को एक निश्चित लंबाई से अधिक नहीं लिखना चाहते हैं.
नीचे दिया गया कोड स्निपेट उत्तरार्द्ध के लिए एक उदाहरण दिखाता है, यह 500 संदेशों के लिए उपयोगकर्ता के संदेश को बाधित करता है.
अधिकतम लंबाई
गुण त्रुटि संदेश नहीं लौटाता है, लेकिन ब्राउज़र बस उपयोगकर्ताओं को निर्दिष्ट वर्ण संख्या से अधिक टाइप करने की अनुमति नहीं देता है। इसलिए यह महत्वपूर्ण है बाधा के बारे में उपयोगकर्ताओं को सूचित करें, अन्यथा वे समझ नहीं पाएंगे कि वे टाइपिंग के साथ क्यों नहीं जा सकते.
4. पैटर्न
रेगेक्स सत्यापन के लिए
पैटर्न
विशेषता हमें अनुमति देती है नियमित भाव का उपयोग करें हमारे इनपुट सत्यापन प्रक्रिया में। एक नियमित अभिव्यक्ति एक है वर्णों का पूर्व-निर्धारित सेट यह एक निश्चित पैटर्न बनाता है। हम इसका उपयोग या तो उन स्ट्रिंग्स को खोजने के लिए कर सकते हैं जो पैटर्न का अनुसरण करते हैं, या पैटर्न द्वारा परिभाषित एक निश्चित प्रारूप को लागू करने के लिए.
उसके साथ पैटर्न
विशेषता हम बाद में कर सकते हैं - उपयोगकर्ताओं को एक प्रारूप में अपना इनपुट जमा करने के लिए विवश करते हैं दिए गए नियमित अभिव्यक्ति से मेल खाता है.
पैटर्न
विशेषता के कई उपयोग मामले हैं, लेकिन यह विशेष रूप से उपयोगी हो सकता है जब हम चाहते हैं पासवर्ड फ़ील्ड को मान्य करें.
नीचे दिए गए उदाहरण के लिए उपयोगकर्ताओं को एक पासवर्ड दर्ज करने की आवश्यकता होती है जो न्यूनतम 8 वर्ण लंबा हो, और इसमें कम से कम एक अक्षर और एक संख्या (रेगेक्स का उपयोग किया गया स्रोत) हो.
कुछ और बातें
इस लेख में, हमने इस बात पर ध्यान दिया था कि किस तरह इसका उपयोग किया जाए ब्राउज़र-आपूर्ति प्रपत्र सत्यापन HTML5 के मूल बाधा सत्यापन एल्गोरिथ्म द्वारा प्रदान किया गया। हमारी कस्टम सत्यापन स्क्रिप्ट बनाने के लिए, हमें बाधा सत्यापन API का उपयोग करने की आवश्यकता है जो मान्य सत्यापन कौशल को परिष्कृत करने में अगला कदम हो सकता है.
HTML5 फॉर्म सहायक तकनीकों द्वारा सुलभ हैं, इसलिए हमें इसका उपयोग करने की आवश्यकता नहीं है aria-आवश्यक
स्क्रीन पाठकों के लिए आवश्यक इनपुट क्षेत्रों को चिह्नित करने के लिए ARIA विशेषता। हालाँकि यह अभी भी पुराने ब्राउज़रों के लिए पहुँच समर्थन को जोड़ने के लिए उपयोगी हो सकता है। यह भी संभव है बाधा सत्यापन से बाहर निकलें जोड़कर novalidate
बूलियन के लिए विशेषता तत्त्व.