घर स्टामाटाइटिस बेस्वाद सत्यापन php. POST डेटा को सत्यापित करने के लिए सत्यापनकर्ता वर्ग

बेस्वाद सत्यापन php. POST डेटा को सत्यापित करने के लिए सत्यापनकर्ता वर्ग

लगभग सभी इंटरैक्टिव वेब अनुप्रयोगों को इनपुट सत्यापित करने की आवश्यकता होती है। उदाहरण के लिए, पंजीकरण फॉर्म की पुष्टि के लिए संभवतः पासवर्ड की आवश्यकता होगी। शायद पता ईमेलअद्वितीय होना चाहिए। पृष्ठभूमि की जाँच एक बोझिल प्रक्रिया हो सकती है। सौभाग्य से, लारवेल में नहीं, वैलिडेटर वर्ग सत्यापन सहायकों का एक अद्भुत सेट प्रदान करता है, जो डेटा सत्यापन को यथासंभव आसान बनाता है। आइए एक उदाहरण देखें:

सत्यापन के लिए डेटा सरणी प्राप्त करना:

$इनपुट = इनपुट::सभी();

डेटा सत्यापन नियमों को परिभाषित करना:

$नियम = सरणी("नाम" => "आवश्यक|अधिकतम:50", "ईमेल" => "आवश्यक|ईमेल|अद्वितीय:उपयोगकर्ता",);

एक सत्यापनकर्ता उदाहरण बनाना और डेटा को मान्य करना:

$सत्यापन = सत्यापनकर्ता::बनाना($इनपुट, $नियम); अगर ($सत्यापन->विफल()) ( वापसी $सत्यापन->त्रुटियां; )

अगर कोई संपत्ति है त्रुटियाँआपको एक संदेश संग्राहक तक पहुंच मिलती है जो आपको आसानी से अपने स्वयं के त्रुटि संदेश बनाने की अनुमति देता है। बेशक, सभी सत्यापन नियमों में डिफ़ॉल्ट रूप से त्रुटि संदेश होते हैं। मानक त्रुटि संदेश मौजूद हैं भाषा/en/validation.php.

अब आप वैलिडेटर वर्ग का उपयोग करने के बुनियादी नियमों से परिचित हैं। आप अपने डेटा को सत्यापित करने के लिए उपयोग किए जाने वाले नियमों का पता लगाने और सीखने के लिए तैयार हैं!

सत्यापन नियम

अनिवार्य डेटा

आवश्यक गैर-रिक्त पैरामीटर मान की जाँच करना:

"नाम" => "आवश्यक"

अल्फ़ा, अल्फ़ा न्यूमेरिक, और अल्फ़ा डैश

केवल पत्रों की जाँच हो रही है:

"नाम" => "अल्फ़ा"

केवल अक्षरों और संख्याओं की जाँच करना:

"उपयोगकर्ता नाम" => "alpha_num"

केवल अक्षर, संख्या, डैश और अंडरस्कोर की जाँच करें:

"उपयोगकर्ता नाम" => "अल्फा_डैश"

आकार

किसी स्ट्रिंग विशेषता के स्ट्रिंग आकार, या संख्यात्मक विशेषता के लिए मानों की श्रेणी की जाँच करना:

"नाम" => "आकार:10"

मानों की श्रेणी की जाँच करना:

"भुगतान" => "बीच:10.50"

टिप्पणी:सीमा में न्यूनतम और अधिकतम शामिल हैं।

न्यूनतम विशेषता आकार की जाँच करना:

"भुगतान" => "न्यूनतम:10"

अधिकतम विशेषता आकार की जाँच करना:

"भुगतान" => "अधिकतम: 50"

संख्यात्मक प्रकार

यह जाँचना कि क्या कोई विशेषता एक संख्यात्मक प्रकार है:

"भुगतान" => "संख्यात्मक"

यह जांचना कि कोई विशेषता पूर्णांक प्रकार है या नहीं:

"भुगतान" => "पूर्णांक"

घटनाएँ और बहिष्करण

मानों की सरणी में शामिल करने के लिए किसी विशेषता की जाँच करना:

"आकार" => "में: छोटा, मध्यम, बड़ा"

मानों की सारणी से बहिष्करण के लिए एक विशेषता की जाँच करना:

"भाषा" => "not_in:cobol,असेम्बलर"

पुष्टीकरण

नियम की पुष्टिजाँचता है कि किसी दिए गए विशेषता के लिए संबंधित एट्रिब्यूट_पुष्टि है या नहीं।

पुष्टि के लिए विशेषता की जाँच करना:

"पासवर्ड" => "पुष्टि"

इस उदाहरण में, सत्यापनकर्ता उस पैरामीटर की जाँच करता है पासवर्डशर्तों को पूरा करता है पासवर्ड पुष्टिसत्यापन सरणी से.

स्वीकार

नियम स्वीकृतमान के लिए पैरामीटर की जाँच करता है हाँया 1 . यह नियम अनिवार्य चेकबॉक्स की स्थापना की जाँच करता है, जैसे, उदाहरण के लिए, "सेवा की शर्तें" चेकबॉक्स।

स्वीकृति जांच:

"शर्तें" => "स्वीकृत"

पत्राचार और मतभेद

यह जाँचना कि विशेषता तुलना की जा रही अन्य विशेषता के समान है:

"टोकन1" => "वही:टोकन2"

यह जांचना कि किसी विशेषता का अलग-अलग मान है:

"पासवर्ड" => "अलग:पुराना_पासवर्ड",

नियमित अभिव्यक्ति

नियम मिलानरेगुलर एक्सप्रेशन से मेल खाने के लिए विशेषता की जाँच करता है।

नियमित अभिव्यक्ति की संतुष्टि की जाँच करना:

"उपयोगकर्ता नाम" => "मिलान:/+/";

विशिष्टता और अस्तित्व

डेटाबेस में विशिष्टता के लिए एक पैरामीटर की जाँच करना:

"ईमेल" => "अद्वितीय:उपयोगकर्ता"

इस उदाहरण में, पैरामीटर ईमेलतालिका में विशिष्टता की जाँच की गई उपयोगकर्ताओं. क्या इस कॉलम के अलावा किसी अन्य कॉलम की विशेषता की विशिष्टता की जांच करने की आवश्यकता है? कोई बात नहीं:

जाँच करने के लिए एक अलग कॉलम निर्दिष्ट करना:

"ईमेल" => "अद्वितीय: उपयोगकर्ता, ईमेल_पता"

अक्सर, किसी रिकॉर्ड को अपडेट करते समय, आपको एक अद्वितीय नियम का उपयोग करने की आवश्यकता होगी, लेकिन अपडेट किए जाने वाले रिकॉर्ड को छोड़ दें। उदाहरण के लिए, आप उपयोगकर्ताओं को अपना ईमेल पता बदलने की अनुमति देना चाहते हैं। लेकिन जब नियम चलता है अद्वितीय, काल्पनिक सत्यापन त्रुटि उत्पन्न होने से बचने के लिए आपको इस उपयोगकर्ता को छोड़ना होगा। यह आसान है:

निर्दिष्ट आईडी को अनदेखा करना:

"ईमेल" => "अद्वितीय: उपयोगकर्ता, ईमेल_पता, 10"

निर्दिष्ट डेटाबेस में किसी विशेषता की उपस्थिति की जाँच करना:

"राज्य" => "मौजूद:राज्य"

मौजूदा नियम के लिए कॉलम नाम निर्दिष्ट करना:

"राज्य" => "मौजूद है: राज्य, संक्षिप्त नाम"

खजूर

जाँच कर रहा है कि दिनांक पैरामीटर पहले है...:

"जन्मतिथि" => "पहले:1986-28-05";

जाँच कर रहा है कि दिनांक पैरामीटर के बाद कोई मान है...:

"जन्मतिथि" => "बाद:1986-28-05";

टिप्पणी:इंतिहान पहलेऔर बाद PHP फ़ंक्शन का उपयोग करता है strtotime.

ईमेल पते

यह जांचना कि पैरामीटर एक ई-मेल पता है:

"पता" => "ईमेल"

टिप्पणी:यह नियम PHP की अंतर्निहित विधि का उपयोग करता है फ़िल्टर_वर.

यूआरएल

जाँच कर रहा है कि पैरामीटर एक यूआरएल है:

"लिंक" => "यूआरएल"

जाँच कर रहा है कि पैरामीटर एक सक्रिय यूआरएल है:

"लिंक" => "active_url"

टिप्पणी:नियम सक्रिय_यूआरएलउपयोग checkdnsrयह जांचने के लिए कि यूआरएल सक्रिय है या नहीं।

डाउनलोड

नियम माइम्सजांचें कि डाउनलोड की गई फ़ाइल MIME प्रकार से मेल खाती है। यह नियम फ़ाइल की सामग्री की जाँच करने और उसका प्रकार निर्धारित करने के लिए PHP Fileinfo एक्सटेंशन का उपयोग करता है। इस नियम पर लागू होने वाले किसी भी फ़ाइल एक्सटेंशन को इसमें परिभाषित किया गया है config/mimes.php.

यह जांचना कि फ़ाइल किसी विशिष्ट प्रकार की है या नहीं:

"चित्र" => "मीम्स: जेपीजी, जीआईएफ"

टिप्पणी:जाँच करते समय, Input::file() या Input::all() का उपयोग करना याद रखें।

जाँच कर रहा है कि फ़ाइल एक छवि है:

"चित्र" => "छवि"

फ़ाइल आकार की जाँच की जा रही है:

"चित्र" => "छवि|अधिकतम:100"

त्रुटि संदेश का अनुरोध करें

लारवेल आपको त्रुटि संग्राहक नामक एक साधारण वर्ग का उपयोग करके त्रुटि संदेशों को संभालने की अनुमति देता है। तरीकों को कॉल करने के बाद गुजरताया विफल रहता हैसत्यापनकर्ता उदाहरण, आप संपत्ति का उपयोग करके त्रुटि तक पहुंच सकते हैं त्रुटियाँ. त्रुटि संग्राहक के पास है सरल कार्यत्रुटि संदेशों को क्वेरी करने के लिए:

यह निर्धारित करना कि किसी विशेषता में त्रुटि संदेश है:

अगर ($सत्यापन->त्रुटियाँ->है("ईमेल")) (//ई-मेल विशेषता में त्रुटियाँ हैं...)

किसी विशेषता के लिए पहला त्रुटि संदेश क्वेरी करें:

प्रतिध्वनि $सत्यापन->त्रुटियाँ->प्रथम('ईमेल');

आपको अपने त्रुटि संदेश को HTML टैग में लपेटने की आवश्यकता हो सकती है। कोई बात नहीं। :message प्लेस-होल्डर को कॉल करते समय, विधि के दूसरे पैरामीटर के रूप में प्रारूप निर्दिष्ट करें।

त्रुटि संदेश स्वरूपण:

प्रतिध्वनि $सत्यापन->त्रुटियाँ->प्रथम("ईमेल", "");

किसी विशेषता के लिए सभी त्रुटि संदेश पुनर्प्राप्त करना:

$संदेश = $सत्यापन->त्रुटियाँ->प्राप्त करें('ईमेल');

किसी विशेषता के लिए सभी त्रुटि संदेशों को फ़ॉर्मेट करना:

$संदेश = $सत्यापन->त्रुटियां->प्राप्त करें("ईमेल", "");

सभी विशेषताओं के लिए सभी त्रुटि संदेश प्राप्त हो रहे हैं:

$संदेश = $सत्यापन->त्रुटियाँ->सभी();

सभी विशेषताओं के लिए सभी त्रुटि संदेशों को फ़ॉर्मेट करना:

$संदेश = $सत्यापन->त्रुटियाँ->सभी("");

सत्यापन पारित करना

एक बार जब आप अपना सत्यापन कर लेते हैं, तो आपको दृश्य में त्रुटियों को प्रदर्शित करने का एक आसान तरीका चाहिए। लारवेल इसे बहुत आसान बनाता है। आइए एक सामान्य परिदृश्य पर नजर डालें। इसे दो तरह से परिभाषित किया जा सकता है:

रूट::गेट("रजिस्टर", फ़ंक्शन() ( रिटर्न व्यू::मेक("यूजर.रजिस्टर"); )); रूट::पोस्ट("रजिस्टर", फ़ंक्शन() ($नियम = सरणी(...); $सत्यापन = सत्यापनकर्ता::बनाना(इनपुट::सभी(), $नियम); यदि ($सत्यापन->विफल रहता है( )) ( return Redirect::to("register")->with_errors($validation); ) ));

महान! इसलिए हमारे पास पंजीकरण फॉर्म के लिए दो सरल मार्ग हैं। एक फॉर्म डिस्प्ले को संभालने के लिए, और एक फॉर्म इनपुट को संभालने के लिए। POST रूट में हम इनपुट पर कुछ जाँच करते हैं। यदि सत्यापन विफल हो जाता है, तो हम आपको त्रुटियों को इंगित करते हुए और त्रुटियों को फॉर्म में प्रदर्शित करते हुए पंजीकरण फॉर्म पर वापस भेज देंगे।

लेकिन ध्यान दें कि हम अपने GET रूट में त्रुटियों को किसी लक्ष्य के साथ स्पष्ट रूप से नहीं जोड़ते हैं. हालाँकि, त्रुटि चर दृश्य में उपलब्ध होगा। लारवेल समझदारी से पता लगाता है कि सत्र में त्रुटियां हैं या नहीं, और यदि हां, तो संदेशों को दृश्य में संलग्न करता है। यदि कोई त्रुटि नहीं है, तो खाली त्रुटि संदेश कंटेनर अभी भी दृश्य से जुड़ा रहेगा। एक त्रुटि संदेश कंटेनर हमेशा दृश्य में उपलब्ध रहेगा। हम आपके जीवन को आसान बनाना पसंद करते हैं।

कस्टम त्रुटि संदेश

क्या आप अपने स्वयं के त्रुटि संदेश का उपयोग करना चाहते हैं? आप किसी दिए गए विशेषता और नियम के लिए कस्टम त्रुटि संदेशों का उपयोग भी करना चाह सकते हैं। किसी भी तरह से, सत्यापनकर्ता वर्ग ऐसा करना आसान बनाता है।

सत्यापनकर्ता के लिए अपने स्वयं के त्रुटि संदेशों की एक श्रृंखला बनाना:

$संदेश = सरणी("आवश्यक" => "विशेषता फ़ील्ड आवश्यक है।",); $सत्यापन = सत्यापनकर्ता::बनाना(इनपुट::प्राप्त(), $नियम, $संदेश);

महान! अब हमारे कस्टम संदेश हमेशा सत्यापन के दौरान उपयोग किए जाएंगे। लेकिन कैसी अभिव्यक्ति :गुणहमारे संदेश में. आपके जीवन को आसान बनाने के लिए, सत्यापनकर्ता वर्ग प्रतिस्थापित हो जाता है :गुणउस विशेषता के लिए जिसके इनपुट के कारण त्रुटि हुई। यह विशेषता नाम से अंडरस्कोर भी हटा देगा। आप भी उपयोग कर सकते हैं :अन्य, :आकार, :मिनट, :अधिकतम, और :मूल्यआपके त्रुटि संदेशों के निर्माण के लिए प्लेसहोल्डर।

कस्टम त्रुटि संदेशों के उदाहरण:

$संदेश = सरणी("समान" => "विशेषता और अन्य का मिलान होना चाहिए।", "आकार" => "विशेषता का आकार बिल्कुल:आकार होना चाहिए।", "बीच" => "विशेषता का मिलान होना चाहिए बीच:न्यूनतम - :अधिकतम।", "में" => ":विशेषता निम्न प्रकारों में से एक होनी चाहिए: :मान",);

यदि आपको एक आवश्यक संदेश परिभाषित करने की आवश्यकता है, लेकिन केवल एक ईमेल विशेषता के लिए तो क्या होगा? कोई बात नहीं। बस संदेश का उपयोग करके निर्दिष्ट करें विशेषता_नियमनामकरण:

किसी विशिष्ट विशेषता के लिए संदेश को परिभाषित करना:

$messages = array("email_required" => "हमें आपका ई-मेल पता जानना होगा!",);

इस उदाहरण में, कस्टम त्रुटि संदेश का उपयोग केवल ईमेल विशेषता के लिए किया जाएगा, अन्यथा मानक संदेशों का उपयोग किया जाएगा।

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

भाषा फ़ाइल में अपनी स्वयं की सरणी जोड़ना:

"कस्टम" => सरणी ("ईमेल_आवश्यक" => "हमें आपका ई-मेल पता जानना होगा!",)

स्वयं के सत्यापन नियम

लारवेल कई शक्तिशाली सत्यापन नियम प्रदान करता है। हालाँकि, आप अपना खुद का बना सकते हैं। वहाँ दो हैं सरल तरीकेसत्यापन नियम बनाना। दोनों ही उपयोग में विश्वसनीय हैं। आपको बस वह चुनना है जो आपके प्रोजेक्ट के लिए अधिक उपयुक्त हो।

अपना स्वयं का सत्यापन नियम पंजीकृत करना:

सत्यापनकर्ता::रजिस्टर("अद्भुत", फ़ंक्शन($विशेषता, $मूल्य, $पैरामीटर) (वापसी $मूल्य == "अद्भुत"; }); !}

इस उदाहरण में, हमने सत्यापनकर्ता वर्ग के लिए नए सत्यापन नियम पंजीकृत किए हैं। यह नियम तीन पैरामीटर लेता है. पहला जाँच की जा रही विशेषता का नाम है, दूसरा जाँच की जा रही विशेषता का मान है, और तीसरा उन मापदंडों की एक सरणी है जो नियम के लिए निर्दिष्ट किए गए थे।

आपका नियम कॉल इस प्रकार दिखता है:

$नियम = सरणी("उपयोगकर्ता नाम" => "आवश्यक|बहुत बढ़िया",);

बेशक, आपको नए नियम के लिए एक त्रुटि संदेश परिभाषित करने की आवश्यकता है। आप इसे या तो सरणी विशेष संदेशों में कर सकते हैं:

$संदेश = सारणी("अद्भुत" => "विशेषता मान अद्भुत होना चाहिए!",); $सत्यापनकर्ता = सत्यापनकर्ता::बनाएं(इनपुट::प्राप्त करें(), $नियम, $संदेश);

या इसमें नियम के लिए एक प्रविष्टि जोड़कर भाषा/en/validation.php:

"अद्भुत" => "विशेषता मान अद्भुत होना चाहिए!",

जैसा कि ऊपर बताया गया है, आप कस्टम नियम में पैरामीटर की एक सूची भी निर्दिष्ट और प्राप्त कर सकते हैं:

// नियम बनाते समय... $नियम = सरणी("उपयोगकर्ता नाम" => "आवश्यक|अद्भुत:हां",); // नियम में... वैलिडेटर::रजिस्टर ("अद्भुत", फ़ंक्शन ($ विशेषता, $ मूल्य, $ पैरामीटर) ( वापसी $ मूल्य == $ पैरामीटर; )

इस उदाहरण में, आपके सत्यापन नियम के तर्क पैरामीटर को एक तत्व युक्त एक सरणी प्राप्त होगी: "हाँ"।

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

सबसे पहले, एक क्लास बनाएं सत्यापनकर्ताजो वर्ग को विरासत में मिला है लारवेल\सत्यापनकर्ताऔर इसे अंदर रखें अनुप्रयोग/पुस्तकालय:

अपनी खुद की कक्षा को परिभाषित करना:

अब, आइए अपना "अद्भुत" नियम जोड़ें और इसे एक नई कक्षा में परिभाषित करें:

एक नया नियम जोड़ना:

ध्यान दें कि Validate_awesom विधि का नाम नामकरण परंपरा के अनुसार रखा गया है। वे। "अद्भुत" नियम के लिए, विधि का नाम "validate_awesome" होना चाहिए। यह वैलिडेटर वर्ग का विस्तार करने के कई तरीकों में से एक है। सत्यापनकर्ता वर्ग को केवल "सही" या "गलत" मान लौटाने की आवश्यकता होती है। बस इतना ही!

ध्यान रखें कि आपके द्वारा बनाए गए सत्यापन नियमों के लिए आपको अभी भी एक कस्टम संदेश बनाना होगा। ऐसा करने की विधि इस बात से भी स्वतंत्र है कि आप नियमों को कैसे परिभाषित करते हैं!

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

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

जब उपयोगकर्ता डेटा को मान्य करने की बात आती है, तो यह क्लाइंट साइड (वेब ​​​​ब्राउज़र में) या सर्वर साइड पर किया जा सकता है।

पहले, क्लाइंट-साइड सत्यापन केवल जावास्क्रिप्ट का उपयोग करके किया जा सकता था। लेकिन सब कुछ बदल गया है (या लगभग बदल गया है), क्योंकि HTML5 की मदद से, जावास्क्रिप्ट में जटिल सत्यापन स्क्रिप्ट लिखने की आवश्यकता के बिना, ब्राउज़र में सत्यापन किया जा सकता है।

HTML5 का उपयोग करके फॉर्म सत्यापन

HTML5 निम्नलिखित टैग विशेषताओं के आधार पर एक काफी मजबूत तंत्र प्रदान करता है : प्रकार, पैटर्न और आवश्यकता। इन नई विशेषताओं के साथ, आप कुछ डेटा सत्यापन कार्यक्षमता को ब्राउज़र पर लोड कर सकते हैं।

आइए यह समझने के लिए इन विशेषताओं पर नजर डालें कि वे फॉर्म सत्यापन में कैसे मदद कर सकते हैं।

प्रकार विशेषता

यह विशेषता बताती है कि डेटा प्रोसेसिंग के लिए कौन सा इनपुट फ़ील्ड प्रदर्शित करना है, उदाहरण के लिए परिचित फ़ील्ड जैसे

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

नीचे दिए गए डेमो में ईमेल फ़ील्ड मानों के साथ खेलने का प्रयास करें।

अन्य मानक फ़ील्ड प्रकार भी हैं, जैसे , और क्रमशः संख्याओं, यूआरएल और फोन नंबरों को मान्य करने के लिए।

ध्यान दें: फ़ोन नंबरों में अंकों की संख्या और प्रारूपों में अंतर के कारण फ़ोन नंबर प्रारूप अलग-अलग देशों में भिन्न होते हैं। परिणामस्वरूप, विनिर्देश फोन नंबरों की जांच के लिए एक एल्गोरिदम को परिभाषित नहीं करता है, इसलिए लेखन के समय यह सुविधा ब्राउज़र द्वारा खराब रूप से समर्थित है।

सौभाग्य से हमारे लिए, फोन नंबर सत्यापन पैटर्न विशेषता का उपयोग करके किया जा सकता है, जो एक तर्क के रूप में नियमित अभिव्यक्ति लेता है, जिसे हम आगे देखेंगे।

पैटर्न विशेषता

पैटर्न विशेषता संभवतः कई फ्रंट-एंड डेवलपर्स को खुशी से उछलने पर मजबूर कर देगी। यह विशेषता एक नियमित अभिव्यक्ति (जावास्क्रिप्ट नियमित अभिव्यक्ति प्रारूप के समान) स्वीकार करती है जिसका उपयोग फ़ील्ड में दर्ज किए गए डेटा की शुद्धता की जांच करने के लिए किया जाएगा।

रेगुलर एक्सप्रेशन एक ऐसी भाषा है जिसका उपयोग पाठ को पार्स करने और हेरफेर करने के लिए किया जाता है। इनका उपयोग अक्सर जटिल खोजने और बदलने के कार्यों के साथ-साथ दर्ज किए गए डेटा की शुद्धता की जांच के लिए किया जाता है।

आज, नियमित अभिव्यक्तियाँ अधिकांश लोकप्रिय प्रोग्रामिंग भाषाओं के साथ-साथ कई स्क्रिप्टिंग भाषाओं, संपादकों, एप्लिकेशन, डेटाबेस और कमांड लाइन उपयोगिताओं में शामिल हैं।

रेगुलर एक्सप्रेशन (RegEX) टेक्स्ट की एक स्ट्रिंग, जैसे व्यक्तिगत वर्ण, शब्द या वर्ण पैटर्न से मिलान करने के लिए एक शक्तिशाली, संक्षिप्त और लचीला उपकरण है।

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

आइए इनपुट फ़ील्ड के मान को सत्यापित करने के लिए नियमित अभिव्यक्तियों का उपयोग करने के कुछ उदाहरण देखें।

दूरभाष संख्या

जैसा कि पहले उल्लेख किया गया है, विभिन्न देशों में फ़ोन नंबर प्रारूपों में विसंगतियों के कारण टेल फ़ील्ड प्रकार ब्राउज़रों द्वारा पूरी तरह से समर्थित नहीं है।

उदाहरण के लिए, कुछ देशों में टेलीफोन नंबरों का प्रारूप xxxx-xxx-xxxx के रूप में दर्शाया जाता है, और टेलीफोन नंबर स्वयं कुछ इस तरह होगा: 0803-555-8205 .

इस पैटर्न से मेल खाने वाली नियमित अभिव्यक्ति है: ^\d(4)-\d(3)-\d(4)$ . कोड में इसे इस प्रकार लिखा जा सकता है:

अल्फ़ान्यूमेरिक मान

आवश्यक विशेषता

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

यह हमें जावास्क्रिप्ट का उपयोग करके फ़ील्ड सत्यापन लागू करने से बचाता है, जिससे डेवलपर्स का कुछ समय बच सकता है।

उदाहरण के लिए: या (एक्सएचटीएमएल अनुकूलता के लिए)

आपके द्वारा ऊपर देखे गए सभी डेमो आवश्यक विशेषता का उपयोग करते हैं, इसलिए आप किसी भी फ़ील्ड को भरने के बिना फ़ॉर्म सबमिट करने का प्रयास करके इसे क्रियान्वित कर सकते हैं।

निष्कर्ष

फ़ॉर्म सत्यापन के लिए ब्राउज़र समर्थन बहुत अच्छा है, और पुराने ब्राउज़र के लिए आप पॉलीफ़िल का उपयोग कर सकते हैं।

यह ध्यान देने योग्य है कि अकेले ब्राउज़र-साइड सत्यापन पर भरोसा करना खतरनाक है, क्योंकि इन जांचों को हमलावरों या बॉट द्वारा आसानी से बायपास किया जा सकता है।

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

यहां इस पोस्ट में, हम देखेंगे कि PHP में फ़ोन नंबर को कैसे मान्य किया जाए। कई स्थितियों में, वेब डेवलपर्स को एक फॉर्म के माध्यम से सबमिट किए गए फ़ोन नंबर को सत्यापित करने की आवश्यकता होती है।

इसलिए इन मामलों में, हमें यह पुष्टि करनी होगी कि सबमिट किया गया फ़ोन नंबर वैध संरचना या पैटर्न में है।

PHP में फ़ोन नंबर सत्यापन कोई कठिन काम नहीं है। हम इसे सरल और आसान तरीके से करने जा रहे हैं।

हम सभी जानते हैं कि एक फ़ोन नंबर आम तौर पर 10 अंकों का नंबर होता है। लेकिन बहुत सारी असाधारण घटनाएं घटित हो सकती हैं और इस कारण से, केवल यह जांचना पर्याप्त नहीं है कि संख्या लंबाई में 10 का पूर्णांक है या नहीं।

कभी-कभी कोई उपयोगकर्ता देश कोड के साथ या कभी-कभी देश कोड से पहले "+" चिह्न के साथ नंबर जमा कर सकता है। इसलिए इसे सत्यापित करना अधिक जटिल कार्य लग सकता है।

लेकिन घबराना नहीं। यहां आपको उपयोग के लिए तैयार PHP फ़ंक्शन मिलेगा जिसमें कोड की केवल कुछ पंक्तियाँ हैं।

यहां इस पोस्ट में हम आपको उदाहरण कोड दिखाने जा रहे हैं जो हमारा काम करेगा।

हम एक फ़ंक्शन बनाने जा रहे हैं जिसका उपयोग मोबाइल नंबर को मान्य करने के लिए किया जा सकता है। नीचे फ़ंक्शन का दिया गया कोड है:

फ़ंक्शन वैलिडेट_फ़ोन_नंबर($फ़ोन) ( // अनुमति +, - और . फ़ोन नंबर में $filtered_phone_number = फ़िल्टर_var($फ़ोन, FILTER_SANITIZE_NUMBER_INT); // नंबर से "-" हटाएं $phone_to_check = str_replace("-", "", $ फ़िल्टर्ड_फ़ोन_नंबर); // नंबर की लंबाई जांचें // यदि आप किसी विशिष्ट देश से फ़ोन नंबर चाहते हैं तो इसे अनुकूलित किया जा सकता है यदि (strlen($phone_to_check)< 10 || strlen($phone_to_check) >14) (झूठा लौटें; ) अन्यथा (सच्चा लौटें; ) )

उपरोक्त फ़ंक्शन फ़ोन नंबर को पैरामीटर के रूप में लेगा। फ़ंक्शन के अंदर, हमने सभी अवैध वर्णों को संख्या से हटा दिया है ताकि यह केवल "+", "-" और "" स्वीकार करे। FILTER_SANITIZE_NUMBER_INT फ़िल्टर का उपयोग करना। ठीक है, आपने देखा होगा, कई मामलों में फ़ोन नंबर इस प्रारूप में लिखा जा सकता है - +91-523-452-5555। इसीलिए हमने फ़ोन नंबर में "+" और "-" की अनुमति दी है।

फिर हमने str_replace PHP फ़ंक्शन का उपयोग करके फ़ोन नंबर से "-" हटा दिया है।

उसके बाद, हमने लंबाई की जांच की और लंबाई के आधार पर सही या गलत लौटाया। आप देख सकते हैं कि लंबाई 10 से 14 के बीच होनी चाहिए। ऐसा इसलिए है क्योंकि आम तौर पर, एक संख्या 10 अक्षरों की होती है और देश कोड के साथ यह 14 तक हो सकती है।

अब नीचे उस फ़ंक्शन का उपयोग दिया गया है जिसे हमने अभी बनाया है:

$फ़ोन = "+91-444-444-5555"; यदि (validate_phone_number($phone) == true) ( ​​इको "फ़ोन नंबर वैध है"; ) अन्यथा ( इको "अमान्य फ़ोन नंबर"; )

उपरोक्त कोड सही होने पर "फ़ोन नंबर वैध है" लौटाएगा। यदि यह गलत होगा तो यह "अमान्य फ़ोन नंबर" लौटाएगा।

तो वह कैसा था? हमने अभी PHP में मोबाइल नंबर का वैलिडेशन देखा है।

आप इस पोस्ट में मजा आया? यदि आप PHP का उपयोग करके किसी फ़ोन नंबर को सत्यापित करने के लिए कोड में कोई सुधार चाहते हैं तो कृपया मुझे बताएं।


पिछले लेख में मैंने अन्य उपलब्ध समाधानों के साथ अपनी लाइब्रेरी की तुलना लिखने का वादा किया था, इसलिए आज हम Aura.Filter, Respect Validation, Sirius Validation और Valitron का उपयोग करके सत्यापन को देखेंगे।


आइए कल्पना करें कि हमारे पास विकास में एक निश्चित सार्वजनिक सेवा है जिसके लिए उपयोगकर्ताओं को सभी कार्यों तक पूर्ण पहुंच के लिए पंजीकरण करने की आवश्यकता होती है। इस प्रकार, पंजीकरण फॉर्म में निम्नलिखित फ़ील्ड होंगे:

  1. नाम।इसमें बिल्कुल दो शब्द होने चाहिए, पहला उपयोगकर्ता का पहला नाम और दूसरा अंतिम नाम।
  2. लॉग इन करें।यदि कोई मान पारित किया जाता है, तो इसमें केवल लैटिन अक्षर, हाइफ़न और अंडरस्कोर शामिल होने चाहिए।
  3. ईमेल।एक वैध ईमेल पता होना चाहिए.
  4. पासवर्ड।सेट होना चाहिए और 64 अक्षरों से अधिक लंबा नहीं होना चाहिए।
  5. मान गया।एक विशिष्ट चेकबॉक्स जिसे उपयोगकर्ता को सेवा की शर्तों की स्वीकृति की पुष्टि करने के लिए जांचना होगा।

इसलिए, हमारे पास पांच फ़ील्ड हैं जिन्हें उपयोगकर्ता को हमारी काल्पनिक सेवा के साथ पंजीकरण करने के लिए भरना होगा। आइए कल्पना करें कि हमें इनपुट के रूप में पूरी तरह से अमान्य डेटा प्राप्त हुआ:


$डेटा = [ "नाम" => "अल्बर्ट", // दो शब्द होने चाहिए "लॉगिन" => "@lbert", // "निषिद्ध" वर्ण @ "ईमेल" => "कुछ गलत", // होना चाहिए एक ई-मेल "पासवर्ड" बनें =>

आभा.फ़िल्टर

Aura.Filter का उपयोग करके सत्यापन एक फ़िल्टर फ़ैक्टरी से शुरू होता है। हमें एक तथाकथित "विषय फ़िल्टर" बनाने की आवश्यकता है, क्योंकि हम एक सरणी को मान्य करेंगे, न कि किसी व्यक्तिगत मान को।

नियमों को परिभाषित करना

Aura\Filter\FilterFactory का उपयोग करें; $फ़िल्टर = (नया फ़िल्टरफ़ैक्टरी)->नयाविषयफ़िल्टर(); $filter->validate("name") ->isNotBlank() ->is("two_words") ->setMessage("नाम दो शब्दों का होना चाहिए।"); $filter->validate("login") ->isBlankOr("alnum") ->setMessage("यदि आप एक लॉगिन निर्दिष्ट करते हैं, तो इसमें केवल लैटिन अक्षर होने चाहिए।"); $filter->validate("email") ->isNotBlank() ->is("email") ->setMessage("कृपया एक वैध ईमेल पता दर्ज करें।"); $filter->validate("password") ->isNotBlank() ->is("strlenMax", 64) ->setMessage("कृपया अपना पासवर्ड लिखें।"); $फ़िल्टर->मान्य करें("सहमत") ->है("कॉलबैक", फ़ंक्शन($विषय, $फ़ील्ड) (वापसी $विषय->($फ़ील्ड) === सत्य; ))->सेटमैसेज("आपको चाहिए सेवा की शर्तों से सहमत हूँ");

जैसा कि आप देख सकते हैं, नियमों का विवरण काफी सरल है। Aura.Filter बॉक्स से बाहर उपयोगी नियमों का एक पूरा सेट प्रदान करता है और उनमें से कुछ का उपयोग उपरोक्त उदाहरण में किया गया था:

  1. isNotBlank विधि.इंगित करता है कि फ़ील्ड नहीं हो सकती खाली मान.
  2. alnum.यह नियम केवल लैटिन अक्षरों की अनुमति देता है।
  3. ईमेल।और यह बहुत स्पष्ट है :)
  4. स्ट्रलेनमैक्स.निर्दिष्ट करता है कि फ़ील्ड is विधि के दूसरे तर्क द्वारा निर्दिष्ट लंबाई से अधिक नहीं हो सकती है।
  5. वापस बुलाओ।इस प्रकार का नियम कॉन्ट्रोलियो के क्लोजर के समान है। यह आपको किसी नियम को समापन के रूप में परिभाषित करने की अनुमति देता है। इस समापन के लिए, Aura.Filter "विषय", फ़ॉर्म से हमारे डेटा की सरणी और एक फ़ील्ड को पास करता है, इस मामले में सहमत है।

आपने संभवतः देखा होगा कि मैंने दो_शब्द नियम निर्दिष्ट नहीं किया है। स्वाभाविक रूप से, Aura.Filter में ऐसा कोई नियम नहीं है, इसलिए हमें एक बनाने की आवश्यकता है। जैसा कि दस्तावेज़ में कहा गया है, यह नियम के लिए एक अलग वर्ग का उपयोग करके किया जाता है:


/** * नियम जो उपयोगकर्ता नाम को मान्य करता है। * उपयोगकर्ता नाम में दो शब्द होते हैं: पहला और अंतिम नाम, एक स्थान से अलग। */ वर्ग उपयोगकर्ता नाम नियम (/** * उपयोगकर्ता नाम को मान्य करता है। * * @param object|array $subject * @param string $field * @param int $max * * @return bool */ public function __invoke($subject, $ फ़ील्ड, $अधिकतम = शून्य) ($मान = $विषय->($फ़ील्ड); यदि (! is_scaler($मूल्य)) (झूठा लौटें; ) वापसी (बूल) preg_match("/^+\s+$/u" , $मूल्य);

दूसरा चरण फ़िल्टर फ़ैक्टरी को हमारे नए नियम के बारे में बताना है। यह फ़िल्टर फ़ैक्टरी के नियमों की एक श्रृंखला के रूप में पहला तर्क पारित करके किया जाता है:


अगला कदम Aura.Filter को सूचित करना है कि हमने एक नया नियम बनाया है और इसका उपयोग करना चाहते हैं। यह फ़ैक्टरी के पहले तर्क में नियमों की एक श्रृंखला पारित करके किया जाता है:


Aura\Filter\FilterFactory का उपयोग करें; $rules = ["two_words" => function() (नया UserNameRule लौटाएँ; ) ]; $फ़िल्टर = (नया फ़िल्टरफ़ैक्टरी($नियम))->नयाविषयफ़िल्टर();

अब हमारे दो_शब्द नियम का उपयोग किसी अन्य मानक नियम की तरह ही किया जा सकता है।

प्रतिक्रिया

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


हम Aura.Filter के साथ निम्नानुसार सत्यापन करते हैं:


$मान्य = $फ़िल्टर->लागू करें($डेटा); यदि (! $ मान्य) ($ विफलताएं = $ फ़िल्टर-> getFairures(); $ संदेश = $ विफलताएं-> getMessages(); )

में $संदेशएक सरणी लिखी जा रही है, इसलिए संदेश प्रदर्शित करने के लिए हमें दो नेस्टेड फ़ोरैच की आवश्यकता है:


    $errors) ( foreach ($error के रूप में $error) ( printf('', $error); ) ) ?>

मान्यता का सम्मान करें

तुलना में मैंने जिस दूसरी लाइब्रेरी का उपयोग किया वह एक अपेक्षाकृत लोकप्रिय समाधान है जिसे रेस्पेक्ट वैलिडेशन कहा जाता है। चूँकि लोग उस पर भरोसा करते हैं, मुझे लगता है कि वहाँ देखने लायक कुछ है।


प्रयोग की शुद्धता के लिए, पुस्तकालयों की तुलना करते समय, हम शुरुआत में परिभाषित समान डेटा सेट का उपयोग करेंगे:


Respect\Validation\Validator को v के रूप में उपयोग करें; $डेटा = [ "नाम" => "अल्बर्ट", // दो शब्द होने चाहिए "लॉगिन" => "@lbert", // "निषिद्ध" वर्ण @ "ईमेल" => "कुछ गलत", // होना चाहिए यहां एक ई-मेल भेजें "पासवर्ड" => "" // पासवर्ड बिल्कुल निर्दिष्ट नहीं है // "सहमत" सरणी में नहीं है क्योंकि उपयोगकर्ता ने बॉक्स को चेक नहीं किया है];

नियमों को परिभाषित करना

Aura.Filter की तरह, हमें उपयोगकर्ता नाम के लिए अपने स्वयं के सत्यापन नियम की आवश्यकता है, तो चलिए वहीं से शुरू करते हैं:


नेमस्पेस मायनेमस्पेस; Respect\Validation\Rules\AbstractRule का उपयोग करें; वर्ग उपयोगकर्ता नाम नियम सार नियम का विस्तार करता है (सार्वजनिक फ़ंक्शन सत्यापन ($ इनपुट) (वापसी (बूल) preg_match ("/^+\s+$/u", $input); ))

बाहरी नियम एपीआई लगभग Aura.Filter के समान है, केवल विधि का उपयोग किया जाता है मान्य करें()जादू के बजाय __आह्वान()।मुझे ऐसा लगा, यह एपीआई, सरल और अधिक समझने योग्य है। खैर, यह कॉन्ट्रोलियो के करीब है :)


मुझे दस्तावेज़ में इसका कोई उल्लेख नहीं मिला, हालाँकि, नियम के अलावा, आपको इसके लिए अपना स्वयं का अपवाद प्रकार बनाना होगा। अपवाद वर्ग के नाम में नियम वर्ग का नाम और एक पोस्टफिक्स शामिल होना चाहिए अपवाद.


Respect\Validation\Exceptions\NestedValidationException का उपयोग करें; वर्ग UserNameRuleException NestedValidationException का विस्तार करता है ( // )

खैर, अंततः हम अपने डेटा को सत्यापित कर सकते हैं। सबसे पहले, हम अपना नया नियम सत्यापनकर्ता को देते हैं ताकि उसे इसके बारे में पता चले और हम भविष्य में इसका उपयोग कर सकें। सम्मान सत्यापन में यह विधि को कॉल करके किया जाता है साथ()उस नामस्थान के स्थानांतरण के साथ जिसमें गैर-मानक नियम स्थित हैं।


v::with('MyNamespace\\');

अब सभी गैर-मानक नियम नामस्थान में स्थित हैं मेरा नामस्थान, सत्यापनकर्ता द्वारा "मान्यता प्राप्त" की जाएगी। अगला कदम आवश्यक नियमों का वर्णन करना और सत्यापन करना है।


v::विशेषता("नाम", v::userNameRule()) ->विशेषता("लॉगिन", v::alnum("-_")) ->विशेषता("ईमेल", v::ईमेल()) ->विशेषता("पासवर्ड", v::notEmpty()->stringType()->लंबाई(शून्य, 64)) ->विशेषता("सहमत", v::trueVal()) ->assert((ऑब्जेक्ट) $डेटा);

ध्यान दें कि हम अपने नियम को विशेषता पर कैसे लागू करते हैं नाम. यहां नियम वर्ग का नाम सत्यापनकर्ता विधि के नाम में बदल दिया गया है। बाकी नियम, सामान्यतः, सहज ज्ञान युक्त हैं।


यह अलग से उल्लेख करने लायक है कि हम सरणी क्यों प्रदान करते हैं $डेटावस्तु को. तथ्य यह है कि रेस्पेक्ट वैलिडेशन वस्तुओं को इनपुट के रूप में स्वीकार करता है, सरणियों को नहीं। इस लाइब्रेरी का उपयोग करते हुए विकास करते समय इसे ध्यान में रखा जाना चाहिए।

प्रतिक्रिया

Aura.Filter के विपरीत, सत्यापन विफल होने पर Respect सत्यापनकर्ता एक अपवाद फेंकता है। और इस अपवाद में सत्यापन त्रुटि संदेश शामिल हैं। इसलिए, जो उदाहरण अभी दिखाया गया था उसे इस प्रकार लिखा जाना चाहिए:


प्रयास करें ( v::with("RespectValidationExample\\"); v::attribute("name", v::userNameRule()) ->attribute("login", v::alnum("-_")) - >विशेषता("ईमेल", v::ईमेल()) ->विशेषता("पासवर्ड", v::notEmpty()->स्ट्रिंगटाइप()->लंबाई(शून्य, 64)) ->विशेषता("सहमत", v::trueVal()) ->assert((ऑब्जेक्ट) $data ) पकड़ें (NestedValidationException $ex) ( $messages = $ex->getMessages(); )

का उपयोग करते हुए संदेश प्राप्त करें(), हमें सत्यापन प्रक्रिया के दौरान सत्यापनकर्ता द्वारा एकत्र किए गए सभी संदेशों की एक सपाट सरणी मिलेगी। सरणी को डंप करने पर, हमें कुछ इस तरह मिलता है:


सरणी(5) ( => स्ट्रिंग(29) "%s के लिए डेटा सत्यापन विफल" => स्ट्रिंग(60) "लॉगिन में केवल अक्षर (ए-जेड), अंक (0-9) और "-_"" => स्ट्रिंग होना चाहिए (25) "ईमेल वैध ईमेल होना चाहिए" => स्ट्रिंग(26) "पासवर्ड खाली नहीं होना चाहिए" => स्ट्रिंग(32) "सहमत विशेषता मौजूद होनी चाहिए" )

आप संदेशों को अपने हिसाब से बदल सकते हैं. शायद मैंने किसी तरह इस लाइब्रेरी को गलत समझा, लेकिन यह प्रक्रिया मुझे इतनी स्पष्ट नहीं लगी: आपको विधि का उपयोग करने की आवश्यकता है संदेश ढूंढें()संभाले गए अपवाद पर, जहां आप संदेशों को विशेषताओं के लिए नहीं, बल्कि नियमों के लिए परिभाषित करते हैं।


$ex->findMessages([ "userNameRule" => "उपयोगकर्ता नाम में दो शब्द होने चाहिए।", "alnum" => "हमें आपका लॉगिन पसंद नहीं है।", "ईमेल" => "आपको स्पष्ट रूप से पसंद नहीं है आप हमें अपना ई-मेल देना चाहते हैं।", "notEmpty" => "अच्छा, आपका पासवर्ड कहाँ है?", "सहमत" => "यह अफ़सोस की बात है कि आप असहमत हैं।" ]);

मुझे नहीं पता कि क्या ग़लत है, लेकिन कुछ चीज़ें हैं जो मुझे अभी भी समझ नहीं आ रही हैं। उपरोक्त तरीके से नियमों को परिभाषित करने से हमें यही मिलता है:


सरणी(5) (=>स्ट्रिंग(40) "उपयोगकर्ता नाम दो शब्द होना चाहिए।" => स्ट्रिंग(31) "हमें आपका लॉगिन पसंद नहीं है।" => स्ट्रिंग(25) "ईमेल वैध ईमेल होना चाहिए" = > स्ट्रिंग(5) "अच्छा, आपका पासवर्ड कहां है?" => स्ट्रिंग(9) "यह अफ़सोस की बात है कि आप सहमत नहीं हैं।"

जैसा कि आप देख सकते हैं, ईमेल फ़ील्ड के लिए संदेश लागू नहीं किया गया था, मानक वाला ही बना रहा। लेकिन सूचकांक 4 पर संदेश इसके विपरीत है! और यह इस तथ्य के बावजूद है कि मैंने नियम के नाम का नहीं, बल्कि फ़ील्ड के नाम का उपयोग किया है। जबकि यदि मैंने नियम नाम (trueVal) का उपयोग किया होता, तो मेरा संदेश कहीं खो गया होता। इस लाइब्रेरी के अनुभवी उपयोगकर्ताओं की टिप्पणियों का बहुत स्वागत है।

सीरियस सत्यापन

ठीक है, चलिए अगली लाइब्रेरी पर चलते हैं और देखते हैं कि यह समान कार्यों को कैसे संभालती है।

नियमों को परिभाषित करना

एक बार फिर हमें उपयोगकर्ता नाम के लिए एक नियम परिभाषित करने की आवश्यकता है। हम इसे कुछ इस तरह लिखेंगे:


वर्ग UserNameRule AbstractRule का विस्तार करता है ( // त्रुटि संदेश const MESSAGE = "उपयोगकर्ता नाम दो शब्द होना चाहिए।"; const LABELED_MESSAGE = "(लेबल) दो शब्द होना चाहिए।"; सार्वजनिक फ़ंक्शन सत्यापन ($ मूल्य, $ valueIdentifier = null ) ( वापसी (बूल) preg_match("/^+\s+$/u", $value ) )

कृपया पहले से चर्चा की गई पुस्तकालयों की तुलना में दृष्टिकोण में अंतर पर ध्यान दें। हम गुणों, विधियों या नियम तर्कों का उपयोग करने के बजाय स्थिरांक में दो प्रकार के संदेशों को परिभाषित करते हैं।


आइए अब सत्यापन तर्क का वर्णन करें:


$सत्यापनकर्ता = नया सत्यापनकर्ता; $validator ->add("name", "required | MyApp\Validation\Rule\UserNameRule") ->add("login", "required | alphanumhyphen", null, "लॉगिन में केवल लैटिन अक्षर, डैश और अंडरस्कोर हो सकते हैं। ") ->जोड़ें("ईमेल", "आवश्यक | ईमेल", शून्य, "कृपया एक सही ईमेल दर्ज करें।") ->जोड़ें("पासवर्ड", "आवश्यक | अधिकतम लंबाई(64)", शून्य, "आपका पासवर्ड, सर।") ->जोड़ें("सहमत", "आवश्यक | बराबर(सही)", शून्य, "आप सहमत क्यों नहीं हुए?");

जैसा कि आप देख सकते हैं, नियमों का सेट बहुत सरल और पठनीय है। विवरण के लिए, हम क्षैतिज पट्टियों द्वारा अलग किए गए नामों का उपयोग करते हैं। यह दृष्टिकोण लारवेल और कॉन्ट्रोलियो में उपयोग किए गए दृष्टिकोण के समान है।


चौथी विधि तर्क जोड़ना()सत्यापन विफल होने पर सिरियस द्वारा उपयोग किए जाने वाले सत्यापन त्रुटि संदेश का वर्णन करता है। हमने अपने नए नियम के लिए कोई संदेश क्यों नहीं जोड़ा? उपयोगकर्ता नाम नियम?


$सत्यापनकर्ता->जोड़ें("नाम", "आवश्यक | MyApp\Validation\Rule\UserNameRule")

ऐसा इसलिए है क्योंकि संदेश पहले से ही वर्ग स्थिरांक में वर्णित हैं:


वर्ग UserNameRule AbstractRule का विस्तार करता है ( // त्रुटि संदेश const MESSAGE = "उपयोगकर्ता नाम दो शब्दों का होना चाहिए।"; ...

एक अन्य विकल्प सत्यापनकर्ता की addMessage() विधि का उपयोग करना है:


$validator->addMessage('ईमेल', 'कृपया एक वैध ईमेल दर्ज करें');

कृपया ध्यान दें कि कस्टम नियमों की पहचान उनके वर्ग के पूरे नाम से की जाती है, जबकि कॉन्ट्रोलियो में आप उपनाम/उपनाम निर्दिष्ट कर सकते हैं।

प्रतिक्रिया

सत्यापन करने के लिए, हम सत्यापनकर्ता विधि को कॉल करते हैं मान्य करें(), इसमें डेटा पास करना:


$डेटा = [ "नाम" => "अल्बर्ट", // दो शब्द होने चाहिए "लॉगिन" => "@lbert", // "निषिद्ध" वर्ण @ "ईमेल" => "कुछ गलत", // होना चाहिए यहां एक ई-मेल भेजें "पासवर्ड" => "" // पासवर्ड बिल्कुल निर्दिष्ट नहीं है // "सहमत" सरणी में नहीं है क्योंकि उपयोगकर्ता ने बॉक्स को चेक नहीं किया है]; $सत्यापनकर्ता->सत्यापन($डेटा);

रेस्पेक्ट के विपरीत, सीरियस कोई अपवाद नहीं फेंकेगा, बल्कि बस वापस लौट आएगा असत्य. सत्यापन त्रुटि संदेश सत्यापनकर्ता विधि के माध्यम से प्राप्त किए जा सकते हैं संदेश प्राप्त करें(). यह विशेषताओं द्वारा समूहीकृत त्रुटियों को लौटाता है, इसलिए त्रुटियों से गुजरने के लिए हमें दो फ़ोरैच लूप की आवश्यकता होती है:


foreach ($validator->getMessages() as $attribute => $messages) ( foreach ($messages as $message) ( echo $message->getTemplate() . "\n"; ) )

यहां $message एक क्लास ऑब्जेक्ट है सिरियस\मान्यता\त्रुटिसंदेश, जिसकी एक विधि है getTemplate(), हमें वही संदेश लौटाना चाहिए जिसकी हमें आवश्यकता है।

वैलिट्रॉन

नियमों को परिभाषित करना

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


वैलिट्रॉन में कस्टम नियम जोड़ने के लिए एक स्थिर विधि है नियम जोड़ें(), जिसमें पहले दो तर्क आवश्यक हैं और तीसरा वैकल्पिक है। मुझे यह तरीका पसंद आया, क्योंकि यह नियम पहचानकर्ता, तर्क और त्रुटि संदेश एक ही स्थान पर दिखाता है।


वैलिट्रॉन\Validator का उपयोग करें; Validator::addRule("two_words", function($field, $value) ( ​​​​ return (bool) preg_match("/^+\s+$/u", $value); ), "उपयोगकर्ता नाम बिल्कुल सही होना चाहिए दो शब्द ");

दूसरा अंतर यह है कि नियमों को विशेषताओं पर कैसे लागू किया जाता है। पिछले सभी मामलों में, हमने देखा कि एक विशेषता, जैसे वह थी, एक प्राथमिक चीज़ है।


वैलिट्रॉन ने एक अलग रास्ता अपनाया और सत्यापन नियम पहले रखे। नियमों का वर्णन करके, आप इन नियमों में विशेषताएँ लागू करते प्रतीत होते हैं, न कि इसके विपरीत।


$सत्यापनकर्ता = नया सत्यापनकर्ता($डेटा); $ सत्यापनकर्ता -> नियम ("दो_शब्द", "नाम") -> लेबल ("") -> नियम ("आवश्यक", ["नाम", "लॉगिन", "ईमेल", "पासवर्ड", "सहमत" ] ) ->नियम('स्लग', 'लॉगिन') ->नियम('ईमेल', 'ईमेल') ->नियम('स्वीकृत', 'सहमत');

जैसा कि उदाहरण से देखा जा सकता है, विधि में नियम()हम पहले नियम का नाम लिखते हैं, और उसके बाद ही उन विशेषताओं को इंगित करते हैं जो इस नियम से मेल खाना चाहिए। एक अधिक स्पष्ट उदाहरण आवश्यक नियम है, जो दर्शाता है कि विशेषताएँ उस नियम से कैसे "संबंधित" हैं।


वैलिट्रॉन (अन्य समाधानों की तरह जिनकी हमने समीक्षा की है) मानक त्रुटि संदेश प्रदान करता है। यदि आप बस उनका उपयोग करते हैं, तो आप देखेंगे कि प्रत्येक संदेश संबंधित विशेषता के नाम से शुरू होता है।


गैर-मानक त्रुटि संदेशों का उपयोग होने पर भी वैलिट्रॉन संदेश पाठ में विशेषता नामों को प्रतिस्थापित करता है। इसीलिए हमने विशेषता नाम को हटाने के लिए एक खाली स्ट्रिंग के साथ लेबल() विधि का उपयोग किया।


$सत्यापनकर्ता->नियम("दो_शब्द", "नाम")->लेबल("")

प्रतिक्रिया

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


$सत्यापनकर्ता->सत्यापन();

विधि का उपयोग करके सत्यापन त्रुटि संदेश प्राप्त किए जा सकते हैं getErrors():


$सत्यापनकर्ता->त्रुटियाँ();

यहां संदेशों को सीरियस वैलिडेशन की तरह ही विशेषताओं द्वारा समूहीकृत किया गया है, सिवाय इसके कि संदेश के लिए कोई अलग वर्ग नहीं है, और हमें एक नियमित बहु-आयामी सरणी मिलती है।


foreach ($validator->errors() as $attribute => $messages) ( foreach ($messages as $message) ( echo $message . "\n"; ) )

नियंत्रण

और अंत में, आज की आखिरी लाइब्रेरी मेरा अपना विकास है जिसे कॉन्ट्रोलियो कहा जाता है।

नियमों को परिभाषित करना

फिर से, पांचवीं बार, हम उपयोगकर्ता नाम के लिए एक सत्यापन नियम बनाएंगे। सब कुछ अपेक्षाकृत सरल और मानक है:


नेमस्पेस MyProject\Validation\Rules; कॉन्ट्रोलियो\नियम\सार नियम का उपयोग करें; क्लास टूवर्ड्स Kontrolio\Rules\AbstractRule का विस्तार करता है (सार्वजनिक फ़ंक्शन isValid($input = null) ( return (bool) preg_match("/^+\s+$/u", $input); ) )

अब हम एक फ़ैक्टरी बनाते हैं और विधि का उपयोग करके उसमें एक नियम पंजीकृत करते हैं बढ़ाना():


नेमस्पेस मायप्रोजेक्ट; कॉन्ट्रोलियो\फ़ैक्टरी का उपयोग करें; MyProject\Validation\Rules\TwoWords का उपयोग करें; $फ़ैक्टरी = कॉन्ट्रोलियो\फ़ैक्टरी::getInstance()->extend();

नियम को पंजीकृत करने के बाद, हम इसका उपयोग कर सकते हैं, जिसमें नाम भी शामिल है - दो_शब्द। आइए एक सत्यापनकर्ता बनाएं:


$डेटा = [ "नाम" => "अल्बर्ट", // दो शब्द होने चाहिए "लॉगिन" => "@lbert", // "निषिद्ध" वर्ण @ "ईमेल" => "कुछ गलत", // होना चाहिए यहां एक ई-मेल भेजें "पासवर्ड" => "" // पासवर्ड बिल्कुल निर्दिष्ट नहीं है // "सहमत" सरणी में नहीं है क्योंकि उपयोगकर्ता ने बॉक्स को चेक नहीं किया है]; $नियम = ["नाम" => "दो_शब्द", "लॉगिन" => "कभी-कभी|अल्फाडैश", "ईमेल" => "ईमेल", "पासवर्ड" => "लंबाई:1.64", "सहमत" => " स्वीकृत" ]; $messages = [ "नाम" => "उपयोगकर्ता नाम में दो शब्द होने चाहिए।", "लॉगिन" => "हमें आपका लॉगिन पसंद नहीं है।", "ईमेल" => "आप स्पष्ट रूप से देना नहीं चाहते हैं हमें आपका ईमेल।", "पासवर्ड" => "अच्छा, आपका पासवर्ड कहाँ है?", "सहमत" => "यह अफ़सोस की बात है कि आप सहमत नहीं हैं।" ]; $सत्यापनकर्ता = $फैक्टरी->बनाना($डेटा, $नियम, $संदेश);

हमने लारवेल में उपयोग किए गए वाक्यविन्यास के समान एक वाक्यविन्यास का उपयोग करके नियमों का वर्णन किया, हालांकि हम अधिक क्रियात्मक संस्करण का उपयोग कर सकते थे:


$नियम = ["नाम" => नए दो शब्द, "लॉगिन" => , "ईमेल" => नया ईमेल, "पासवर्ड" => नई लंबाई(1, 64), "सहमत" => नया स्वीकृत ];

प्रतिक्रिया

उसी पद्धति का उपयोग करके सत्यापन शुरू किया गया है मान्य करें():


$सत्यापनकर्ता->सत्यापन();

अब हम किसी एक विधि का उपयोग करके त्रुटि संदेश प्राप्त कर सकते हैं getErrors()या getErrorsसूची(). पहली विधि अधिक जटिल त्रुटि आउटपुट की अनुमति देती है, जबकि दूसरी एक सपाट सरणी लौटाती है। का उपयोग करते हुए getErrors()हम संदेशों को कुछ इस प्रकार आउटपुट कर सकते हैं:


    $संदेश): ?>

और साथ getErrorsसूची()आप संदेशों की एक सरल सूची बना सकते हैं:


getErrorsList(); ?>

जमीनी स्तर

इस लेख में मैंने निम्नलिखित पुस्तकालयों के उपयोग के उदाहरण दिखाए हैं:

  1. आभा.फ़िल्टर
  2. मान्यता का सम्मान करें
  3. सीरियस सत्यापन
  4. वैलिट्रॉन
  5. नियंत्रण

एक "वास्तविक दुनिया का उदाहरण" बहुत सरल लग सकता है। मुझे सहमत होना होगा, क्योंकि, वास्तव में, कुछ पुस्तकालय क्षमताओं को लेख से बाहर रखा गया था। सिद्धांत रूप में, यदि आप रुचि रखते हैं, तो आप स्वयं उनकी विशेषताओं का अध्ययन कर सकते हैं।


प्रत्येक पुस्तकालय की अपनी विशेषताएं हैं और उसके कुछ स्याह पक्ष भी हैं, इसलिए मुझे लगता है कि किसी एक को चुनना स्वाद और चुनौती का मामला है।


पढ़ने के लिए धन्यवाद। सही चुनाव करो।

टैग: टैग जोड़ें

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

इस सामान्य PHP फॉर्म सत्यापन स्क्रिप्ट के बारे में

यह सामान्य PHP फॉर्म सत्यापनकर्ता स्क्रिप्ट आपके फॉर्म में सत्यापन जोड़ना बहुत आसान बनाती है।

हम प्रपत्र में प्रत्येक तत्व के साथ "सत्यापन विवरणकों" का एक सेट बनाते और जोड़ते हैं। "सत्यापन विवरणक" एक स्ट्रिंग है जो निष्पादित किए जाने वाले सत्यापन के प्रकार को निर्दिष्ट करता है। उदाहरण के लिए, "req" का अर्थ है आवश्यक, "अल्फा" का अर्थ है केवल वर्णमाला वर्णों की अनुमति देना इत्यादि।

प्रपत्र में प्रत्येक फ़ील्ड में शून्य, एक या अधिक सत्यापन हो सकते हैं। उदाहरण के लिए, इनपुट खाली नहीं होना चाहिए, 25 वर्णों से कम होना चाहिए, अल्फ़ा-न्यूमेरिक होना चाहिए, आदि

आप प्रपत्र में प्रत्येक इनपुट फ़ील्ड के लिए सत्यापन विवरणकों का एक सेट संबद्ध कर सकते हैं।

PHP फॉर्म सत्यापन स्क्रिप्ट डाउनलोड करें

आप नीचे PHP फॉर्म सत्यापन स्क्रिप्ट डाउनलोड कर सकते हैं:
ज़िप फ़ाइल में फॉर्म सत्यापन स्क्रिप्ट formvalidator.php, दस्तावेज़ीकरण और उपयोग के नमूने शामिल हैं।

PHP फॉर्म सत्यापन स्क्रिप्ट का उपयोग करना

  1. अपनी फॉर्म प्रोसेसिंग स्क्रिप्ट में formvalidator.php शामिल करें
  2. आवश्यकता_एक बार "formvalidator.php"
  3. एक फॉर्मवैलिडेटर ऑब्जेक्ट बनाएं और फॉर्म सत्यापन विवरणक जोड़ें।
  4. $सत्यापनकर्ता = नया फॉर्म सत्यापनकर्ता(); $validator->addValidation('नाम','अनुरोध','कृपया नाम भरें'); $validator->addValidation("ईमेल","ईमेल", "ईमेल के लिए इनपुट एक वैध ईमेल मान होना चाहिए"); $validator->addValidation("ईमेल","अनुरोध","कृपया ईमेल भरें");

    पहला तर्क प्रपत्र में इनपुट फ़ील्ड का नाम है। दूसरा तर्क सत्यापन वर्णनकर्ता है जो आवश्यक सत्यापन के प्रकार को बताता है। तीसरा तर्क सत्यापन विफल होने पर प्रदर्शित होने वाला त्रुटि संदेश है।

  5. ValidateForm() फ़ंक्शन को कॉल करके फ़ॉर्म को सत्यापित करें
  6. if(!$validator->ValidateForm()) (इको " सत्यापन त्रुटियाँ:"; $error_hash = $validator->GetErrors(); foreach($error_hash as $inpname => $inp_err) ( echo "

    $inpname: $inp_err

    \एन"; ) )

उदाहरण

नीचे दिए गए उदाहरण से विचार स्पष्ट हो जाएगा

addValidation ("नाम", "अनुरोध", "कृपया नाम भरें"); $validator->addValidation("ईमेल","ईमेल", "ईमेल के लिए इनपुट एक वैध ईमेल मान होना चाहिए"); $validator->addValidation("ईमेल","अनुरोध","कृपया ईमेल भरें"); यदि($सत्यापनकर्ता->ValidateForm()) (प्रतिध्वनि "

सत्यापन सफलता!

"; $show_form=false; ) अन्यथा (इको " सत्यापन त्रुटियाँ:"; $error_hash = $validator->GetErrors(); foreach($error_hash as $inpname => $inp_err) ( echo "

$inpname: $inp_err

\n"; ) ) ) यदि(सत्य == $show_form) ( ?>

नाम: ईमेल:

कस्टम सत्यापन जोड़ा जा रहा है

यदि आप एक कस्टम सत्यापन जोड़ना चाहते हैं, जो सत्यापन विवरणकों द्वारा प्रदान नहीं किया गया है, तो आप ऐसा कर सकते हैं। यहां चरण दिए गए हैं:

  1. कस्टम सत्यापन के लिए एक क्लास बनाएं और DoValidate() फ़ंक्शन को ओवरराइड करें
  2. क्लास MyValidator CustomValidator का विस्तार करता है (फ़ंक्शन DoValidate(&$formars,&$error_hash) ( if(stristr($formars["Comments"],"http://")) ( $error_hash["Comments"]="कोई URL की अनुमति नहीं है टिप्पणियों में"; गलत लौटें; ) सही लौटें; ) )

  3. कस्टम सत्यापन ऑब्जेक्ट जोड़ें
  4. $सत्यापनकर्ता = नया फॉर्म सत्यापनकर्ता(); $validator->addValidation('नाम','अनुरोध','कृपया नाम भरें'); $validator->addValidation("ईमेल","ईमेल", "ईमेल के लिए इनपुट एक वैध ईमेल मान होना चाहिए"); $validator->addValidation("ईमेल","अनुरोध","कृपया ईमेल भरें"); $custom_validator = नया MyValidator(); $सत्यापनकर्ता->AddCustomValidator($custom_validator);

अन्य सत्यापनों के बाद कस्टम सत्यापन फ़ंक्शन स्वचालित रूप से कॉल किया जाएगा।

सत्यापन वर्णनकर्ताओं की तालिका

यहां सभी सत्यापन वर्णनकर्ताओं की सूची दी गई है:

सत्यापन वर्णनकर्ताप्रयोग
अनुरोधमैदान खाली नहीं होना चाहिए
मैक्सलेन=???दर्ज किए गए डेटा की अधिकतम लंबाई की जाँच करता है। उदाहरण के लिए, यदि अनुमत अधिकतम आकार 25 है, तो सत्यापन विवरणक को "मैक्सलेन=25" के रूप में दें।
मिनलेन=???दर्ज की गई स्ट्रिंग की लंबाई को आवश्यक न्यूनतम तक जांचता है। उदाहरण "मिनलेन=5"
alnumडेटा की जाँच करें कि क्या उसमें वर्णमाला या संख्यात्मक वर्णों के अलावा कोई अन्य वर्ण हैं
alnum_sकेवल वर्णमाला, संख्यात्मक और अंतरिक्ष वर्णों की अनुमति देता है
संख्यासंख्यात्मक डेटा की जाँच करें
अल्फावर्णमाला संबंधी डेटा की जाँच करें.
अल्फ़ा_एसवर्णमाला डेटा की जाँच करें और रिक्त स्थान की अनुमति दें।
ईमेलफ़ील्ड एक ईमेल फ़ील्ड है और डेटा की वैधता को सत्यापित करता है।
लेफ्टिनेंट=???
कम=???
सत्यापित करें कि डेटा पारित मूल्य से कम है। केवल संख्यात्मक फ़ील्ड के लिए मान्य.
उदाहरण: यदि मान 1000 से कम होना चाहिए तो सत्यापन विवरण "lt=1000" के रूप में दें
gt=???
इससे भी बड़ा=???
सत्यापित करें कि डेटा पारित मूल्य से अधिक है। केवल संख्यात्मक फ़ील्ड के लिए मान्य.
उदाहरण: यदि मान 10 से अधिक होना चाहिए तो सत्यापन विवरण "gt=10" के रूप में दें
रेगएक्सपी=???रेगुलर एक्सप्रेशन से जांचें कि मान रेगुलर एक्सप्रेशन से मेल खाना चाहिए।
उदाहरण: "regexp=^(1.20)$" अधिकतम 20 वर्णमाला वर्णों की अनुमति देता है।
चयन न करें=??यह सत्यापन विवरणक चुनिंदा इनपुट आइटम (सूचियों) के लिए है। आम तौर पर, चयन सूची बॉक्स में एक आइटम होगा जिसमें लिखा होगा 'एक का चयन करें'। उपयोगकर्ता को इस विकल्प के अलावा कोई अन्य विकल्प चुनना चाहिए। यदि कीमतइस विकल्प का चयन 'एक चुनें' है, सत्यापन विवरण "dontselect=Select One" होना चाहिए
Dontselectchkयह सत्यापन विवरणक चेक बॉक्स के लिए है। उपयोगकर्ता को दिए गए चेक बॉक्स का चयन नहीं करना चाहिए. प्रदान करना कीमतके स्थान पर चेक बॉक्स का ??
उदाहरण के लिए, dontselectchk=on
canselchkयह सत्यापन विवरणक चेक बॉक्स के लिए है। उपयोगकर्ता को दिए गए चेक बॉक्स का चयन करना चाहिए। ?? के स्थान पर चेक बॉक्स का मान प्रदान करें
उदाहरण के लिए, canselchk=on
रेडियो का चयन न करेंयह सत्यापन विवरणक रेडियो बटन के लिए है। उपयोगकर्ता को दिए गए रेडियो बटन का चयन नहीं करना चाहिए. ?? के स्थान पर रेडियो बटन का मान प्रदान करें
उदाहरण के लिए, dontselectradio=NO
रेडियो चुनेंयह सत्यापन विवरणक रेडियो बटन के लिए है। उपयोगकर्ता को दिए गए रेडियो बटन का चयन करना चाहिए। ?? के स्थान पर रेडियो बटन का मान प्रदान करें
उदाहरण के लिए, सेलेक्टरेडियो = हाँ
सेल्मिन=??चेक बॉक्स समूह से कम से कम n संख्या में चेक बॉक्स चुनें।
उदाहरण के लिए: सेल्मिन=3
अकेलाएक रेडियो समूह अनिवार्य बनाता है। उपयोगकर्ता को रेडियो समूह से कम से कम एक आइटम का चयन करना चाहिए।
eqelmnt=???फॉर्म में दो तत्वों की तुलना करें और सुनिश्चित करें कि मान समान हैं उदाहरण के लिए, 'पासवर्ड' और 'पासवर्ड की पुष्टि करें'। प्रतिस्थापित करें ??? अन्य इनपुट तत्व के नाम के साथ।
उदाहरण के लिए: eqelmnt=confirm_pwd


साइट पर नया

>

सबसे लोकप्रिय