ईश्वरविहीन प्रमाणीकरण पंजीकरण php

10/05/2015 रोमचिक

शुभ दिन। इस लेख में, हम उपयोगकर्ता पंजीकरण का विश्लेषण करने के लिए एक उदाहरण का उपयोग करेंगे। फिर उपयोगकर्ता के ईमेल पते की पुष्टि करके उसे सक्रिय करें। और अंत में, उपयोगकर्ता प्राधिकरण। लेकिन केवल सक्रिय उपयोगकर्ताओं को ही अधिकृत किया जाना चाहिए।

पहली चीज़ जो हम करेंगे वह है एक नियंत्रक और पंजीकरण के लिए एक दृश्य बनाना।

एक पंजीकरण प्रपत्र बनाना

संसाधन टेम्प्लेट वाली निर्देशिका पर जाएँ और उसमें प्रमाणीकरण उपनिर्देशिका बनाएँ। अब ऑथ फोल्डर में हम निम्नलिखित कोड के साथ एक फाइल रजिस्टर.ब्लेड.php बनाएंगे:

पंजीकरण

((--त्रुटियाँ--)) @if ($त्रुटियाँ->है()) ×
    @foreach($errors->all() $error के रूप में)
  • ((( $त्रुटि )))
  • @endforeach
@endif (!! csrf_field() ! Email Пароль Повторите пароль Отправить !}

मैं उपरोक्त कोड की व्याख्या नहीं करूंगा, यहां सब कुछ स्पष्ट है।

ऐप/Http/नियंत्रक/Auth/AuthController.php

हम केवल AuthController.php नियंत्रक विधियों को ओवरराइड करेंगे। तो, पंजीकरण फॉर्म प्रदर्शित करने के लिए, एक getRegister विधि है। हम इस विधि को नहीं छूते.

अब चलिए मार्गों पर चलते हैं। फ़ाइल खोलें:

और हमारी पद्धति का मार्ग परिभाषित करें:

मार्ग::प्राप्त करें("auth/register", "Auth\AuthController@getRegister");

अब ब्राउज़र में अपना एप्लिकेशन खोलें। बढ़िया, हमने पंजीकरण फॉर्म देखा।

में उपयोगकर्ता पंजीकरण

आइए तुरंत उपयोगकर्ता पंजीकरण के लिए मार्ग परिभाषित करें। चलिए फाइल पर चलते हैं:

ऐप/Http/नियंत्रक/routes.php

और निम्नलिखित मार्ग जोड़ें:

रूट::पोस्ट("auth/register", "Auth\AuthController@postRegister");

अब उपयोगकर्ताओं को संग्रहीत करने के लिए एक तालिका बनाते हैं। इस तालिका के लिए पहले से ही एक माइग्रेशन मौजूद है, लेकिन यह हमारे लिए उपयुक्त नहीं है। आइए इसे बदलें. चलिए फाइल पर चलते हैं:

डेटाबेस/माइग्रेशन/2014_10_12_create_users_table.php

और आइए कोड बदलें:

मेरे मामले में यह इस तरह दिखता है:

bd.php सहेजें।
महान! हमारे पास डेटाबेस में एक तालिका और उससे एक कनेक्शन है। अब आप एक पेज बनाना शुरू कर सकते हैं जिस पर उपयोगकर्ता अपना डेटा छोड़ेंगे।

3. सामग्री के साथ एक reg.php फ़ाइल बनाएं (सभी टिप्पणियाँ अंदर):



पंजीकरण


पंजीकरण


अपना लॉगिन:




आपका पासवर्ड:








4. एक फ़ाइल बनाएं जो डेटाबेस में डेटा दर्ज करेगी और उपयोगकर्ता को बचाएगी। save_user.php (अंदर टिप्पणियाँ):

5. अब हमारे उपयोगकर्ता पंजीकरण कर सकते हैं! इसके बाद, आपको साइट में प्रवेश करने के लिए पहले से पंजीकृत उपयोगकर्ताओं के लिए एक "दरवाजा" बनाना होगा। Index.php (अंदर टिप्पणियाँ):




होम पेज


होम पेज


अपना लॉगिन:


आपका पासवर्ड:






पंजीकरण करवाना



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

मैंने सब कुछ जाँच लिया, यह ठीक से काम करता है!

इस लेख में, आप सीखेंगे कि HTML, JavaScript, PHP और MySql का उपयोग करके पंजीकरण और लॉगिन फॉर्म कैसे बनाएं। ऐसे फॉर्म लगभग हर वेबसाइट पर उपयोग किए जाते हैं, चाहे उसका प्रकार कुछ भी हो। वे एक फ़ोरम, एक ऑनलाइन स्टोर, सोशल नेटवर्क (जैसे फेसबुक, ट्विटर, ओडनोक्लास्निकी) और कई अन्य प्रकार की साइटों के लिए बनाए गए हैं।

यदि आपके पास अपने स्थानीय कंप्यूटर पर एक वेबसाइट है, तो मुझे आशा है कि आपके पास पहले से ही एक स्थानीय सर्वर स्थापित और चल रहा है। इसके बिना कोई काम नहीं चलेगा.

डेटाबेस में एक टेबल बनाना

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

और इसलिए, हमारे पास एक डेटाबेस है (संक्षिप्त रूप में डीबी), अब हमें एक तालिका बनाने की आवश्यकता है उपयोगकर्ताओंजिसमें हम अपने पंजीकृत उपयोगकर्ताओं को जोड़ेंगे।

मैंने लेख में डेटाबेस में टेबल बनाने का तरीका भी बताया है। तालिका बनाने से पहले, हमें यह निर्धारित करना होगा कि इसमें कौन से फ़ील्ड होंगे। ये फ़ील्ड पंजीकरण फॉर्म के फ़ील्ड के अनुरूप होंगे।

इसलिए, हमने सोचा, कल्पना की कि हमारे फॉर्म में कौन से फ़ील्ड होंगे और एक तालिका बनाई जाएगी उपयोगकर्ताओंइन क्षेत्रों के साथ:

  • पहचान- पहचानकर्ता. मैदान पहचानडेटाबेस की प्रत्येक तालिका में यह होना चाहिए।
  • पहला नाम- नाम बचाने के लिए.
  • उपनाम- उपनाम को सुरक्षित रखने के लिए.
  • ईमेल- डाक पता सहेजने के लिए. हम ई-मेल को लॉगिन के रूप में उपयोग करेंगे, इसलिए यह फ़ील्ड अद्वितीय होनी चाहिए, यानी अद्वितीय अनुक्रमणिका होनी चाहिए।
  • ईमेल_स्थिति- फ़ील्ड यह इंगित करने के लिए कि मेल की पुष्टि हुई है या नहीं। यदि मेल कन्फर्म है तो उसका मान 1 होगा, अन्यथा मान 0 होगा।
  • पासवर्ड- पासवर्ड सेव करने के लिए.


यदि आप चाहते हैं कि आपके पंजीकरण फॉर्म में कुछ अन्य फ़ील्ड हों, तो आप उन्हें भी यहां जोड़ सकते हैं।

बस, हमारी मेज उपयोगकर्ताओंतैयार। चलिए अगले चरण पर चलते हैं।

डेटाबेस कनेक्शन

हमने डेटाबेस बना लिया है, अब हमें उससे जुड़ना है। हम PHP एक्सटेंशन MySQLi का उपयोग करके कनेक्ट करेंगे।

हमारी साइट के फ़ोल्डर में, नाम के साथ एक फ़ाइल बनाएं dbconnect.php, और इसमें निम्नलिखित स्क्रिप्ट लिखें:

यह फ़ाइल dbconnect.phpप्रपत्र हैंडलर से कनेक्ट करने की आवश्यकता होगी.

चर पर ध्यान दें $पता_साइट, यहां मैंने अपनी परीक्षण साइट का नाम दर्शाया है जिस पर मैं काम करूंगा। कृपया तदनुसार अपनी साइट का नाम बताएं।

साइट संरचना

अब आइए हमारी साइट की HTML संरचना पर नजर डालें।

हम साइट के हेडर और फ़ूटर को अलग-अलग फ़ाइलों में ले जायेंगे, हेडर.phpऔर footer.php. हम उन्हें सभी पेजों पर शामिल करेंगे. अर्थात् मुख्य पृष्ठ पर (फ़ाइल Index.php), पंजीकरण फॉर्म वाले पृष्ठ पर (फ़ाइल form_register.php) और प्राधिकरण प्रपत्र वाले पृष्ठ पर (फ़ाइल form_auth.php).

हमारे लिंक से ब्लॉक करें, पंजीकरणऔर प्राधिकार, उन्हें साइट हेडर में जोड़ें ताकि वे सभी पृष्ठों पर प्रदर्शित हों। एक लिंक पंजीकरण फॉर्म (फ़ाइल) वाले पृष्ठ पर प्रवेश करेगा form_register.php) और दूसरा प्राधिकरण प्रपत्र वाले पृष्ठ पर (फ़ाइल)। form_auth.php).

हेडर.php फ़ाइल की सामग्री:

हमारी साइट का नाम

परिणामस्वरूप, हमारा मुख्य पृष्ठ इस प्रकार दिखता है:


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

अब पंजीकरण फॉर्म पर चलते हैं। जैसा कि आप पहले ही समझ चुके हैं, हमारे पास यह फ़ाइल में है form_register.php.

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

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

प्रपत्र प्रदर्शित करने से पहले, सत्र से त्रुटि संदेश प्रदर्शित करने के लिए एक ब्लॉक जोड़ें।

और एक बात और, यदि उपयोगकर्ता पहले से ही अधिकृत है, और जिज्ञासावश वह ब्राउज़र के एड्रेस बार में लिखकर सीधे पंजीकरण पृष्ठ पर जाता है साइट_एड्रेस/फॉर्म_रजिस्टर.php, तो इस मामले में, पंजीकरण फॉर्म के बजाय, हम यह बताते हुए एक हेडर प्रदर्शित करेंगे कि वह पहले से ही पंजीकृत है।

सामान्य तौर पर, फ़ाइल कोड form_register.phpवी गॉट दिस:

आप पहले से ही पंजीकृत हैं

ब्राउज़र में, पंजीकरण फॉर्म वाला पृष्ठ इस तरह दिखता है:


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

पंजीकरण फॉर्म के कोड पर ध्यान दें जहां कैप्चा प्रदर्शित होता है:


हमने छवि के लिए src विशेषता के मान में फ़ाइल का पथ निर्दिष्ट किया है कैप्चा.php, जो इस कैप्चा को उत्पन्न करता है।

आइए फ़ाइल कोड को देखें कैप्चा.php:

कोड पर अच्छी तरह से टिप्पणी की गई है, इसलिए मैं सिर्फ एक बिंदु पर ध्यान केंद्रित करूंगा।

किसी फ़ंक्शन के अंदर छविTtfText(), फ़ॉन्ट का पथ निर्दिष्ट है verdana.ttf. इसलिए कैप्चा के सही ढंग से काम करने के लिए, हमें एक फ़ोल्डर बनाना होगा फोंट्स, और फ़ॉन्ट फ़ाइल को वहां रखें verdana.ttf. आप इसे पा सकते हैं और इंटरनेट से डाउनलोड कर सकते हैं, या इस लेख की सामग्री के साथ संग्रह से ले सकते हैं।

हमने HTML संरचना पूरी कर ली है, अब आगे बढ़ने का समय आ गया है।

JQuery का उपयोग करके ईमेल वैधता की जाँच करना

किसी भी फॉर्म को क्लाइंट साइड (जावास्क्रिप्ट, jQuery का उपयोग करके) और सर्वर साइड दोनों पर दर्ज किए गए डेटा की वैधता की जांच करने की आवश्यकता है।

हमें ईमेल क्षेत्र पर विशेष ध्यान देना चाहिए। यह बहुत महत्वपूर्ण है कि दर्ज किया गया डाक पता वैध हो।

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


और इस मामले में, हमें अधिक विश्वसनीय जांच करनी चाहिए। ऐसा करने के लिए, हम जावास्क्रिप्ट से jQuery लाइब्रेरी का उपयोग करेंगे।

फ़ाइल में jQuery लाइब्रेरी को कनेक्ट करने के लिए हेडर.phpटैग के बीच , समापन टैग से पहले , यह पंक्ति जोड़ें:

इस लाइन के तुरंत बाद, हम ईमेल सत्यापन कोड जोड़ देंगे। यहां हम दर्ज किए गए पासवर्ड की लंबाई जांचने के लिए एक कोड जोड़ेंगे। इसकी लंबाई कम से कम 6 अक्षर होनी चाहिए।

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

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

उपयोगकर्ता पंजीकरण

हम प्रोसेसिंग के लिए फॉर्म को फाइल में भेजते हैं रजिस्टर.php, POST विधि के माध्यम से। इस हैंडलर फ़ाइल का नाम विशेषता मान में निर्दिष्ट है कार्रवाई. और भेजने की विधि विशेषता मान में निर्दिष्ट है तरीका.

इस फ़ाइल को खोलें रजिस्टर.phpऔर पहली चीज़ जो हमें करने की ज़रूरत है वह है एक सत्र लॉन्च फ़ंक्शन लिखना और उस फ़ाइल को कनेक्ट करना जो हमने पहले बनाई थी dbconnect.php(इस फ़ाइल में हमने डेटाबेस से कनेक्शन बनाया है)। और साथ ही, आइए तुरंत कोशिकाओं की घोषणा करें त्रुटि संदेशऔर सफलता_संदेशवैश्विक सत्र सरणी में। में त्रुटि_संदेशहम फॉर्म प्रोसेसिंग के दौरान होने वाले सभी त्रुटि संदेशों को रिकॉर्ड करेंगे सफलता_संदेश, हम खुशी भरे संदेश रिकॉर्ड करेंगे।

आगे बढ़ने से पहले, हमें यह जांचना होगा कि फॉर्म सबमिट किया गया था या नहीं। एक हमलावर विशेषता मान को देख सकता है कार्रवाईफ़ॉर्म से, और पता लगाएं कि कौन सी फ़ाइल इस फ़ॉर्म को संसाधित कर रही है। और उसे ब्राउज़र के एड्रेस बार में निम्नलिखित पता टाइप करके सीधे इस फ़ाइल पर जाने का विचार हो सकता है: http://site_address/register.php

इसलिए हमें वैश्विक POST सरणी में एक सेल की जांच करने की आवश्यकता है जिसका नाम फॉर्म से हमारे "रजिस्टर" बटन के नाम से मेल खाता है। इस तरह हम जांचते हैं कि "रजिस्टर" बटन पर क्लिक किया गया था या नहीं।

यदि कोई हमलावर सीधे इस फ़ाइल पर जाने का प्रयास करता है, तो उन्हें एक त्रुटि संदेश प्राप्त होगा। मैं आपको याद दिला दूं कि $address_site वैरिएबल में साइट का नाम होता है और इसे फ़ाइल में घोषित किया गया था dbconnect.php.

सत्र में कैप्चा मान फ़ाइल में जेनरेट होने पर जोड़ा गया था कैप्चा.php. एक अनुस्मारक के रूप में, मैं आपको फ़ाइल से कोड का यह टुकड़ा फिर से दिखाऊंगा कैप्चा.php, जहां कैप्चा मान सत्र में जोड़ा जाता है:

अब आइए सत्यापन के लिए ही आगे बढ़ें। फाइल मैं रजिस्टर.php, if ब्लॉक के अंदर, जहां हम जांचते हैं कि क्या "रजिस्टर" बटन पर क्लिक किया गया था, या यूं कहें कि जहां टिप्पणी " इंगित की गई है" // (1) कोड के अगले भाग के लिए स्थान"हम लिखते हैं:

//प्राप्त कैप्चा की जांच करें // पंक्ति के आरंभ और अंत से रिक्त स्थान को ट्रिम करें $कैप्चा = ट्रिम($_POST["कैप्चा"]); if(isset($_POST["captcha"]) && !empty($captcha))( //प्राप्त मूल्य की तुलना सत्र के मूल्य से करें। if(($_SESSION["rand"] != $captcha) && ($_SESSION ["रैंड"] != ""))( // यदि कैप्चा सही नहीं है, तो हम उपयोगकर्ता को पंजीकरण पृष्ठ पर लौटाते हैं, और वहां हम उसे एक त्रुटि संदेश दिखाएंगे कि उसने गलत कैप्चा दर्ज किया है $error_message = "

गलती! आपने गलत कैप्चा दर्ज किया है

"; // त्रुटि संदेश को सत्र में सहेजें। $_SESSION["error_messages"] = $error_message; // उपयोगकर्ता को पंजीकरण पृष्ठ हेडर पर लौटाएं("HTTP/1.1 301 स्थायी रूप से स्थानांतरित"); हेडर("स्थान: " .$address_site ।"/form_register.php"); //स्क्रिप्ट निकास रोकें(); ) // (2) कोड के अगले भाग के लिए स्थान)अन्यथा( //यदि कैप्चा पारित नहीं हुआ है या यह खाली निकास है ("

गलती! इसमें कोई वेरिफिकेशन कोड यानी कैप्चा कोड नहीं है. आप मुख्य पृष्ठ पर जा सकते हैं.

"); }

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

यदि सेल मौजूद है, तो हम इस सेल से लाइन के आरंभ और अंत से रिक्त स्थान को ट्रिम करते हैं, अन्यथा, हम उपयोगकर्ता को पंजीकरण फॉर्म वाले पृष्ठ पर वापस रीडायरेक्ट करते हैं।

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

इस कोड को निर्दिष्ट स्थान पर चिपकाएँ" // (2) कोड के अगले भाग के लिए स्थान".

/* जांचें कि वैश्विक सरणी $_POST में फॉर्म से डेटा भेजा गया है या नहीं और सबमिट किए गए डेटा को नियमित चर में लपेटें।*/ if(isset($_POST["first_name"]))( //शुरुआत से रिक्त स्थान ट्रिम करें और स्ट्रिंग का अंत $first_name = ट्रिम($_POST["first_name"]); // रिक्तता के लिए चर की जांच करें यदि(!empty($first_name))( // सुरक्षा के लिए, विशेष वर्णों को HTML इकाइयों में परिवर्तित करें $first_name = htmlspecialchars($first_name, ENT_QUOTES); )else( // त्रुटि संदेश को सत्र में सहेजें। $_SESSION["error_messages"] .= "

अपना नाम दर्ज करें

नाम फ़ील्ड गुम है

"; //उपयोगकर्ता को पंजीकरण पृष्ठ हेडर पर लौटाएं("HTTP/1.1 301 स्थायी रूप से ले जाया गया"); हेडर("स्थान: ".$address_site।"/form_register.php"); //स्क्रिप्ट से बाहर निकलना बंद करें(); ) if( isset($_POST["last_name"]))( //पंक्ति के आरंभ और अंत से रिक्त स्थान ट्रिम करें $last_name = ट्रिम($_POST["last_name"]); if(!empty($last_name)) (// सुरक्षा के लिए, विशेष वर्णों को HTML इकाइयों में परिवर्तित करें $last_name = htmlspecialchars($last_name, ENT_QUOTES); )अन्यथा( // त्रुटि संदेश को सत्र में सहेजें। $_SESSION["error_messages"] .= "

कृपया अपना अंतिम नाम दर्ज करें

"; //उपयोगकर्ता को पंजीकरण पृष्ठ हेडर पर लौटाएं("HTTP/1.1 301 स्थायी रूप से ले जाया गया"); हेडर("स्थान: ".$address_site।"/form_register.php"); //स्क्रिप्ट से बाहर निकलना बंद करें(); ) )अन्यथा ( // त्रुटि संदेश को सत्र में सहेजें। $_SESSION["error_messages"] .= "

अंतिम नाम फ़ील्ड गायब है

"; //उपयोगकर्ता को पंजीकरण पृष्ठ हेडर पर लौटाएं("HTTP/1.1 301 स्थायी रूप से ले जाया गया"); हेडर("स्थान: ".$address_site।"/form_register.php"); //स्क्रिप्ट से बाहर निकलना बंद करें(); ) if( isset($_POST["email"]))( //पंक्ति के आरंभ और अंत से रिक्त स्थान ट्रिम करें $email = ट्रिम($_POST["email"]); if(!empty($email)) ($ ईमेल = htmlspecialchars ($ ईमेल, ENT_QUOTES); // (3) ईमेल पते के प्रारूप और इसकी विशिष्टता की जांच के लिए कोड स्थान) अन्यथा ( // त्रुटि संदेश को सत्र में सहेजें। $_SESSION["error_messages"] .= "

अपना ईमेल दर्ज करें

"; //उपयोगकर्ता को पंजीकरण पृष्ठ हेडर पर लौटाएं("HTTP/1.1 301 स्थायी रूप से ले जाया गया"); हेडर("स्थान: ".$address_site।"/form_register.php"); //स्क्रिप्ट से बाहर निकलना बंद करें(); ) )अन्यथा ( // त्रुटि संदेश को सत्र में सहेजें। $_SESSION["error_messages"] .= "

"; //उपयोगकर्ता को पंजीकरण पृष्ठ हेडर पर लौटाएं("HTTP/1.1 301 स्थायी रूप से ले जाया गया"); हेडर("स्थान: ".$address_site।"/form_register.php"); //स्क्रिप्ट से बाहर निकलना बंद करें(); ) if( isset($_POST["password"]))( //स्ट्रिंग के आरंभ और अंत से रिक्त स्थान ट्रिम करें $password = ट्रिम($_POST["password"]); if(!empty($password)) ($password = htmlspecialchars ($password, ENT_QUOTES); // पासवर्ड एन्क्रिप्ट करें $password = md5($password."top_secret"); )else( // त्रुटि संदेश को सत्र में सहेजें। $_SESSION["error_messages"] .= "

अपना कूटशब्द भरें

"; //उपयोगकर्ता को पंजीकरण पृष्ठ हेडर पर लौटाएं("HTTP/1.1 301 स्थायी रूप से ले जाया गया"); हेडर("स्थान: ".$address_site।"/form_register.php"); //स्क्रिप्ट से बाहर निकलना बंद करें(); ) )अन्यथा ( // त्रुटि संदेश को सत्र में सहेजें। $_SESSION["error_messages"] .= "

"; //उपयोगकर्ता को पंजीकरण पृष्ठ हेडर पर लौटाएं("HTTP/1.1 301 स्थायी रूप से ले जाया गया"); हेडर("स्थान: ".$address_site।"/form_register.php"); //स्क्रिप्ट से बाहर निकलना बंद करें(); ) // (4) डेटाबेस में उपयोगकर्ता को जोड़ने के लिए कोड का स्थान

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

निर्दिष्ट स्थान पर" // (3) डाक पते के प्रारूप और उसकी विशिष्टता की जांच करने के लिए कोड स्थान"निम्नलिखित कोड जोड़ें:

//नियमित अभिव्यक्ति $reg_email = "/^**@(+(*+)*\.)++/i" का उपयोग करके प्राप्त ईमेल पते के प्रारूप की जांच करें; //यदि प्राप्त ईमेल पते का प्रारूप नियमित अभिव्यक्ति से मेल नहीं खाता है if(!preg_match($reg_email, $email))( // त्रुटि संदेश को सत्र में सहेजें। $_SESSION["error_messages"] .= "

आपने ग़लत ईमेल दर्ज किया है

"; //उपयोगकर्ता को पंजीकरण पृष्ठ हेडर पर लौटाएं("HTTP/1.1 301 स्थायी रूप से ले जाया गया"); हेडर("स्थान: ".$address_site।"/form_register.php"); //स्क्रिप्ट से बाहर निकलना बंद करें(); ) // हम जांचते हैं कि क्या ऐसा पता पहले से ही डेटाबेस में है। $result_query = $mysqli->query('SELECT `email` FROM `users` WHERE `email`=''.$email.''''); / /यदि प्राप्त संख्या में बिल्कुल एक पंक्ति है, जिसका अर्थ है कि इस ईमेल पते वाला उपयोगकर्ता पहले से ही पंजीकृत है यदि($result_query->num_rows == 1)( //यदि प्राप्त परिणाम गलत नहीं है यदि(($पंक्ति = $result_query->fetch_assoc()) != false) ( // त्रुटि संदेश को सत्र में सहेजें। $_SESSION["error_messages"] .= "

इस ईमेल पते वाला एक उपयोगकर्ता पहले से ही पंजीकृत है

"; //उपयोगकर्ता को पंजीकरण पृष्ठ हेडर पर लौटाएं("HTTP/1.1 301 स्थायी रूप से ले जाया गया"); हेडर("स्थान: ".$address_site."/form_register.php"); )अन्यथा(//त्रुटि संदेश सहेजें सत्र के लिए . $_SESSION["error_messages"] .= "

डेटाबेस क्वेरी में त्रुटि

"; //उपयोगकर्ता को पंजीकरण पृष्ठ हेडर पर लौटाएं("HTTP/1.1 301 स्थायी रूप से ले जाया गया"); हेडर("स्थान: ".$address_site."/form_register.php"); ) /* चयन बंद करना */ $ परिणाम_क्वेरी-> बंद करें(); //स्क्रिप्ट बंद करें निकास(); ) /* चयन बंद करना */ $result_query->बंद करें();

और इसलिए, हमने सभी जांच पूरी कर ली है, अब उपयोगकर्ता को डेटाबेस में जोड़ने का समय आ गया है। निर्दिष्ट स्थान पर" // (4) डेटाबेस में उपयोगकर्ता को जोड़ने के लिए कोड का स्थान"निम्नलिखित कोड जोड़ें:

//डेटाबेस में उपयोगकर्ता को जोड़ने के लिए क्वेरी $result_query_insert = $mysqli->query('INSERT INTO `users` (first_name, Last_name, email,password) VALUES (""।$first_name."", ""।$last_name ।" ", ""।$ईमेल।", ""।$पासवर्ड।"")"); if(!$result_query_insert)( // त्रुटि संदेश को सत्र में सहेजें। $_SESSION["error_messages"] .= "

उपयोगकर्ता को डेटाबेस में जोड़ने के अनुरोध में त्रुटि

"; //उपयोगकर्ता को पंजीकरण पृष्ठ हेडर पर लौटाएं("HTTP/1.1 301 स्थायी रूप से ले जाया गया"); हेडर("स्थान: ".$address_site।"/form_register.php"); //स्क्रिप्ट से बाहर निकलना बंद करें(); )अन्यथा( $_SESSION["success_messages"] = "

पंजीकरण सफलतापूर्वक पूरा हुआ!!!
अब आप अपने यूजरनेम और पासवर्ड का उपयोग करके लॉग इन कर सकते हैं।

"; //उपयोगकर्ता को प्राधिकरण पृष्ठ हेडर पर भेजें("HTTP/1.1 301 स्थायी रूप से ले जाया गया"); हेडर("स्थान: ".$address_site."/form_auth.php"); ) /* अनुरोध पूरा करना */ $ परिणाम_क्वेरी_इन्सर्ट-> बंद करें(); //डेटाबेस से कनेक्शन बंद करें $mysqli->बंद करें();

यदि किसी उपयोगकर्ता को डेटाबेस में जोड़ने के अनुरोध में कोई त्रुटि हुई है, तो हम सत्र में इस त्रुटि के बारे में एक संदेश जोड़ते हैं और उपयोगकर्ता को पंजीकरण पृष्ठ पर लौटाते हैं।

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

ईमेल पता प्रारूप और पासवर्ड की लंबाई की जाँच करने की स्क्रिप्ट फ़ाइल में है हेडर.php, इसलिए यह इस फॉर्म के फ़ील्ड पर भी लागू होगा।

फ़ाइल में सत्र भी प्रारंभ हो गया है हेडर.php, तो फ़ाइल में form_auth.phpसत्र शुरू करने की कोई आवश्यकता नहीं है, क्योंकि हमें एक त्रुटि मिलेगी।


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

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

उपयोगकर्ता प्राधिकरण

मूल्य विशेषता के लिए कार्रवाईप्राधिकरण बाधा में एक फ़ाइल निर्दिष्ट है auth.php, इसका मतलब है कि फॉर्म इस फ़ाइल में संसाधित किया जाएगा।

और इसलिए, फ़ाइल खोलें auth.phpऔर प्राधिकरण प्रपत्र को संसाधित करने के लिए कोड लिखें। पहली चीज़ जो आपको करने की ज़रूरत है वह एक सत्र शुरू करना और फ़ाइल को कनेक्ट करना है dbconnect.phpडेटाबेस से जुड़ने के लिए.

जब आप साइट से बाहर निकलने के लिंक पर क्लिक करते हैं, तो हमें एक फ़ाइल पर ले जाया जाता है लॉगआउट.php, जहां हम सत्र से ईमेल पते और पासवर्ड के साथ कोशिकाओं को नष्ट कर देते हैं। इसके बाद, हम उपयोगकर्ता को उस पृष्ठ पर वापस लौटाते हैं जिस पर लिंक पर क्लिक किया गया था बाहर निकलना.

फ़ाइल कोड लॉगआउट.php:

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

हमने यह भी सीखा कि इनपुट डेटा को क्लाइंट साइड (ब्राउज़र में, जावास्क्रिप्ट, jQuery का उपयोग करके) और सर्वर साइड (PHP का उपयोग करके) दोनों पर कैसे मान्य किया जाए। हमने यह भी सीखा कि साइट छोड़ने की प्रक्रिया को कैसे लागू किया जाए।

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

भविष्य में मैं एक लेख लिखूंगा जहां मैं वर्णन करूंगा। और मैं एक लेख लिखने की भी योजना बना रहा हूं जहां मैं समझाऊंगा (पेज को दोबारा लोड किए बिना)। इसलिए, नए लेखों के जारी होने के बारे में सूचित रहने के लिए, आप मेरी वेबसाइट की सदस्यता ले सकते हैं।

यदि आपके कोई प्रश्न हैं, तो कृपया मुझसे संपर्क करें, और यदि आपको लेख में कोई त्रुटि दिखाई देती है, तो कृपया मुझे बताएं।

पाठ योजना (भाग 5):

  • प्राधिकरण प्रपत्र के लिए एक HTML संरचना बनाना
  • हम प्राप्त डेटा को संसाधित करते हैं
  • हम साइट हेडर में उपयोगकर्ता का अभिवादन प्रदर्शित करते हैं
  • क्या आपको लेख पसंद आया?

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

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

    MySQL कोड

    तालिका बनाएं `उपयोगकर्ता` (`आईडी` पूर्णांक (11) शून्य नहीं ऑटो_वृद्धि, `यूआईडी` पूर्णांक (11) शून्य नहीं, `उपयोगकर्ता नाम` पाठ शून्य नहीं, `ईमेल` पाठ शून्य नहीं, `पासवर्ड` पाठ शून्य नहीं, प्राथमिक कुंजी (`आईडी`)) इंजन=माईआईएसएएम डिफॉल्ट चारसेट=utf8 AUTO_INCREMENT=1;

    अब फ़ाइल "sql.php" बनाते हैं। यह डेटाबेस से जुड़ने के लिए जिम्मेदार है। यह कोड, सबसे पहले, सर्वर और उपयोगकर्ता के लिए वेरिएबल बनाता है जब वह सर्वर से कनेक्ट होता है। दूसरे, यह डेटाबेस का चयन करेगा, इस मामले में "USERAUTH"। डेटाबेस तक पहुँचने के लिए इस फ़ाइल को "log.php" और "reg.php" में शामिल किया जाना चाहिए।

    पीएचपी कोड

    अगला लॉगिन पेज है, इसे “login.php” कहा जाए। सबसे पहले, यह त्रुटियों के लिए दर्ज किए गए डेटा की जाँच करता है। पृष्ठ में उपयोगकर्ता नाम, पासवर्ड, सबमिट बटन और पंजीकरण लिंक के लिए फ़ील्ड हैं। जब उपयोगकर्ता "लॉगिन" बटन पर क्लिक करता है, तो फॉर्म "log.php" फ़ाइल के कोड द्वारा संसाधित किया जाएगा और फिर लॉग इन किया जाएगा।

    पीएचपी कोड

    लॉगिन फॉर्म

    उपयोगकर्ता नाम
    पासवर्ड
    पंजीकरण

    फिर हम सिस्टम में लॉग इन करने के लिए एक स्क्रिप्ट लिखते हैं। चलिए इसे "log.php" कहते हैं। इसमें SQL इंजेक्शन से इनपुट डेटा को साफ़ करने का एक फ़ंक्शन है जो आपकी स्क्रिप्ट को बर्बाद कर सकता है। दूसरे, यह फॉर्म डेटा प्राप्त करता है और इसकी शुद्धता की जांच करता है। यदि इनपुट डेटा सही है, तो स्क्रिप्ट उपयोगकर्ता को अधिकृत उपयोगकर्ता पृष्ठ पर भेजती है, यदि नहीं, तो यह त्रुटियां सेट करती है और उपयोगकर्ता को लॉगिन पृष्ठ पर भेजती है।

    पीएचपी कोड

    आइए एक पंजीकरण पृष्ठ बनाएं, इसे "register.php" कहें। यह लॉगिन पेज के समान है, इसमें केवल कुछ और फ़ील्ड हैं, और यदि उपयोगकर्ता के पास पहले से ही एक खाता है तो पंजीकरण लिंक के बजाय, लॉगिन.php का एक लिंक है।

    पीएचपी कोड

    पंजीकरण फॉर्म

    उपयोगकर्ता नाम
    ईमेल
    पासवर्ड
    पासवर्ड दोहराएं
    मेरे पास एक खाता है

    अब हम "reg.php" फ़ाइल में एक पंजीकरण स्क्रिप्ट बनाएंगे। इसमें डेटाबेस से कनेक्ट करने के लिए "sql.php" शामिल होगा। इनपुट फ़ील्ड को साफ़ करने के लिए लॉगिन स्क्रिप्ट में उसी फ़ंक्शन का उपयोग किया जाता है। संभावित त्रुटियों के लिए वेरिएबल सेट किए गए हैं। अगला एक विशिष्ट पहचानकर्ता बनाने का कार्य है जो पहले कभी प्रदान नहीं किया गया है। फिर पंजीकरण फॉर्म से डेटा निकाला जाता है और सत्यापित किया जाता है। यह सुनिश्चित करने के लिए जांच की जाती है कि ईमेल पता सही प्रारूप में है और पासवर्ड सही ढंग से दोबारा दर्ज किया गया है। स्क्रिप्ट यह देखने के लिए जांच करती है कि क्या डेटाबेस में समान नाम वाला कोई उपयोगकर्ता है और यदि हां, तो एक त्रुटि की रिपोर्ट करता है। अंत में, कोड उपयोगकर्ता को डेटाबेस में जोड़ता है।

    पीएचपी कोड

    आपको उपयोगकर्ता को सिस्टम से लॉग आउट करने के लिए एक स्क्रिप्ट भी बनानी होगी। यह दिए गए विशिष्ट आईडी और नाम के साथ उपयोगकर्ता के लिए सत्र समाप्त करता है, और फिर उपयोगकर्ता को लॉगिन पृष्ठ पर पुनर्निर्देशित करता है।

    पीएचपी कोड

    अंत में, "auth.php" स्क्रिप्ट का उपयोग पृष्ठों को केवल अधिकृत उपयोगकर्ताओं के लिए सुलभ बनाने के लिए किया जा सकता है। यह लॉगिन विवरण की जांच करता है और, यदि वे सही हैं, तो उपयोगकर्ता को पेज ब्राउज़ करने की अनुमति देता है, और यदि नहीं, तो उन्हें लॉग इन करने के लिए कहता है। इसके अलावा, यदि कोई एक सत्र बनाकर साइट को हैक करने का प्रयास करता है, तो इसे सामान्य मामले की तरह बाधित कर दिया जाएगा।

    पीएचपी कोड

    उपरोक्त कोड की शर्तों में से एक प्रश्न का विषय है।

    अधिकृत उपयोगकर्ताओं के लिए निम्नलिखित कोड को पेज में डालने की आवश्यकता है, इसे उदाहरण के लिए, "member.php" कहा जाता है, लेकिन आपका नाम आपकी पसंद के अनुसार कुछ भी कहा जा सकता है।

    पीएचपी कोड

    आप इस पृष्ठ तक पहुँचने के लिए अधिकृत हैं। बाहर जाओ ( )

    उपयोगकर्ता प्रमाणीकरण तैयार है!

    अंतिम बार विंसी द्वारा 5 अप्रैल, 2018 को संशोधित किया गया।

    उपयोगकर्ता लॉगिन और पंजीकरण किसी भी सीएमएस एप्लिकेशन के लिए एक बुनियादी आवश्यकता है। किसी प्रोजेक्ट को शुरू करते समय यह प्रारंभिक कार्य होता है। उपयोगकर्ता लॉगिन प्रमाणीकरण वाला एप्लिकेशन अनाम पहुंच को रोककर सुरक्षा प्रदान करता है। हमारे एप्लिकेशन में प्रमाणीकरण सक्षम करने के कई तरीके हैं जैसे OAuth लॉगिन सक्षम करना या सिंगल साइन-ऑन (एसएसओ) लागू करना और इसी तरह के अन्य तरीके। पिछले ट्यूटोरियल में, हमने देखा है कि इसे कैसे लागू करना है और इसके बारे में भी।

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

    उपयोगकर्ता पंजीकरण प्रपत्र

    यह कोड यूजर को साइनअप फॉर्म दिखाने के लिए है। जब उपयोगकर्ता अपने विवरण के साथ फॉर्म जमा करता है, तो उपयोगकर्ता इनपुट को मान्य करने के लिए जावास्क्रिप्ट फ़ंक्शन को कॉल किया जाएगा। सफल सत्यापन के बाद, PHP कोड डेटाबेस इंसर्ट को निष्पादित करने के लिए पोस्ट किए गए फॉर्म डेटा को पढ़ेगा।