Students Save 30%! Learn & create with unlimited courses & creative assets Students Save 30%! Save Now
Advertisement
  1. Code
  2. PHP
Code

PHP में सेशन और सेशन वेरिएबल का उपयोग कैसे करें

by
Difficulty:BeginnerLength:MediumLanguages:

Hindi (हिंदी) translation by Ashish Rampal (you can also view the original English article)

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

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

PHP में सेशन क्या है?

एक सेशन यूज़र्स को पहचानने के लिए अलग-अलग वेब पेजेज पर जानकारी जारी रखने के लिए एक मैकेनिज्म है क्योंकि वे किसी साइट या ऐप पर नेविगेट करते हैं। क्या आप सोच रहे हैं कि वेबसाइट के लिए सेशंस की आवश्यकता क्यों है? यह देखने के लिए कि सेशन क्यों जरूरी हैं, हमें वापस जाना होगा और देखें कि HTTP प्रोटोकॉल को काम करने के लिए कैसे डिज़ाइन किया गया है।

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

निम्नलिखित डायग्राम में HTTP प्रोटोकॉल को संक्षेप में दर्शाया गया है।

The HTTP Protocol and a Stateless Request

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

एक सेशन आपको एक साइट या ऐप के विभिन्न पेजेज में जानकारी साझा करने की अनुमति देता है - इस प्रकार यह स्टेट को बनाए रखने में मदद करता है। इससे सर्वर को पता चलता है कि सभी रिक्वेस्ट एक ही यूजर निकली हैं, इस प्रकार साइट को यूजर-स्पेसिफिक इनफार्मेशन और प्रेफरेन्स को प्रदर्शित करने की अनुमति मिलती है।

सेशन और कुकीज़ के साथ लॉगिन फ्लो

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

  1. कोई यूजर किसी वेबसाइट का लॉगिन पेज खोलता है।
  2. लॉगिन फॉर्म सबमिट करने के बाद, दूसरे छोर पर एक सर्वर एंटर किए गए क्रेडेंशियल को वैलिडेट करके रिक्वेस्ट को ऑथेंटिकेट करता है।
  3. यदि यूजर द्वारा एंटर किए गए क्रेडेंशियल वैलिड हैं, तो सर्वर एक नया सेशन बनाता है। सर्वर एक यूनिक रैंडम नंबर जेनेरेट करता है, जिसे सेशन id कहा जाता है। यह सर्वर पर एक नई फ़ाइल भी बनाता है जिसका उपयोग सेशन-स्पेसिफिक इनफार्मेशन को स्टोर करने के लिए किया जाता है।
  4. इसके बाद, जिस किसी भी रिसोर्स को रिक्वेस्ट किया गया है उसके साथ यूजर को एक सेशन id वापस भेज दी जाती है। बिहाइंड द सीन, यह सेशन id रिस्पांस हैडर में PHPSESSID कुकी में भेजी जाती है।
  5. जब ब्राउज़र को सर्वर से रिस्पांस प्राप्त होता है, तो यह PHPSESSID कुकी हैडर में आती है। यदि ब्राउज़र द्वारा कुकीज़ को अनुमति है, तो यह इस PHPSESSID कुकी को सेव कर लेगा, जो सर्वर द्वारा पारित सेशन id स्टोर करता है।
  6. बाद के रिक्वेस्ट्स के लिए, PHPSESSID कुकी सर्वर पर वापस भेज दी जाती है। जब सर्वर PHPSESSID कुकी पर आता है, तो वह उस सेशन id के साथ सेशन प्रारंभ करने का प्रयास करेगा। यह सेशन प्रारंभ करने के दौरान पहले बनाया गया सेशन फ़ाइल लोड करके ऐसा करता है। इसके बाद सेशन फ़ाइल में स्टोर्ड डेटा के साथ सुपर-ग्लोबल array वेरिएबल $_SESSION शुरू होगा।

इस तरह, यूजर डेटा मल्टीपल रिक्वेस्ट्स में प्रिज़र्व है, और यूजर को पूरे सेशन में लॉग इन रखा जाता है।

निम्नलिखित डायग्राम दर्शाता है कि HTTP प्रोटोकॉल सेशंस के साथ कैसे काम करता है।

The HTTP Protocol and a Request With Sessions

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

सेशन कैसे शुरू करें

इस सेक्शन में, हम चर्चा करेंगे कि PHP में सेशन कैसे शुरू करें।

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

session_start फ़ंक्शन का उपयोग करें

यह वह तरीका है जिसे आप अक्सर देखेंगे, जहां session_start फ़ंक्शन द्वारा सेशन प्रारंभ किया जाता है।

महत्वपूर्ण बात यह है कि ब्राउज़र पर किसी आउटपुट को भेजने से पहले, session_start फ़ंक्शन को स्क्रिप्ट की शुरुआत में कॉल किया जाना चाहिए। अन्यथा, आप कुख्यात Headers are already sent एरर का सामना करेंगे।

ऑटोमेटिकली एक सेशन शुरू करें

यदि आपके पूरे एप्लिकेशन में सेशंस का उपयोग करने की आवश्यकता है, तो आप session_start फ़ंक्शन का उपयोग किये बिना ऑटोमेटिकली सेशन शुरू करने का विकल्प चुन सकते हैं।

php.ini फ़ाइल में एक कॉन्फ़िगरेशन ऑप्शन है जो आपको प्रत्येक रिक्वेस्ट-session.auto_start के लिए ऑटोमेटिकली सेशन प्रारंभ करने की अनुमति देता है। डिफ़ॉल्ट रूप से, यह 0 पर सेट है, और आप ऑटो स्टार्टअप फंक्शनलिटी को सक्षम करने के लिए इसे 1 पर सेट कर सकते हैं।

दूसरी तरफ, यदि आपके पास php.ini फ़ाइल तक पहुंच नहीं है, और आप अपाचे वेब सर्वर का उपयोग कर रहे हैं, तो आप .htaccess फ़ाइल का उपयोग करके इस वेरिएबल को भी सेट कर सकते हैं।

यदि आप ऊपर दी गयी लाइन को .htaccess फ़ाइल में जोड़ते हैं, तो आपके PHP एप्लीकेशन में ऑटोमेटिकली सेशन प्रारंभ करना चाहिए।

सेशन Id कैसे प्राप्त करें

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

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

यह ध्यान रखना महत्वपूर्ण है कि session_id फ़ंक्शन session_start कॉल से पहले रखा जाना चाहिए जब आप कस्टम सेशन id के साथ सेशन प्रारंभ करना चाहते हैं।

सेशन वेरिएबल कैसे बनाएं

इस सेक्शन में, हम PHP में सेशन वेरिएबल को प्रारंभ करने का तरीका जानेंगे।

जैसा कि हमने पहले चर्चा की थी, सेशन शुरू होने के बाद, $_SESSION सुपर-ग्लोबल array संबंधित सेशन जानकारी के साथ शुरू की जाती है। डिफ़ॉल्ट रूप से, यह एक खाली array के साथ शुरू किया गया है, और आप एक key-value जोड़ी का उपयोग करके अधिक जानकारी स्टोर कर सकते हैं।

आइए निम्न उदाहरण स्क्रिप्ट के माध्यम से जाएं जो दर्शाता है कि सेशन वेरिएबल को कैसे प्रारंभ किया जाए।

जैसा कि आप देख सकते हैं, हमने session_start फ़ंक्शन का उपयोग करके स्क्रिप्ट की शुरुआत में एक सेशन शुरू किया है। उसके बाद, हमने कुछ सेशन वेरिएबल शुरू किए हैं। अंत में, हमने $_SESSION सुपर-ग्लोबल का उपयोग करके उन वेरिएबल्स को एक्सेस किया है।

जब आप $_SESSION सुपर-ग्लोबल का उपयोग करके सेशन में डेटा स्टोर करते हैं, तो अंततः सर्वर पर संबंधित सेशन फ़ाइल में स्टोर किया जाता है जो सेशन शुरू होने पर बनाया गया था। इस तरह, सेशन डेटा मल्टीपल रिक्वेस्ट्स में साझा किया जाता है।

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

सेशन वेरिएबल को मॉडिफाई और डिलीट कैसे करें

आप एप्लिकेशन में पहले बनाए गए सेशन वेरिएबल को नियमित रूप से PHP वेरिएबल के लिए मॉडिफाई या डिलीट कर सकते हैं।

आइए देखें कि सेशन वेरिएबल को कैसे मॉडिफाई करें।

उपर्युक्त स्क्रिप्ट में, हमने जांच की है कि $_SESSION ['count'] वेरिएबल पहले स्थान पर सेट है या नहीं। यदि यह सेट नहीं है, तो हम इसे 1 पर सेट करेंगे, अन्यथा हम इसे 1 तक बढ़ाएंगे। इसलिए, यदि आप इस पेज को कई बार रीफ्रेश करते हैं, तो आपको यह देखना चाहिए कि काउंटर हर बार एक एक बढ़ता है!

दूसरी तरफ, यदि आप सेशन वेरिएबल को हटाना चाहते हैं, तो आप निम्न स्निपेट में दिखाए गए unset फ़ंक्शन का उपयोग कर सकते हैं।

इस प्रकार, अब आप $_SESSION ['log_in_user_id'] वेरिएबल का उपयोग नहीं कर सकते क्योंकि इसे unset फ़ंक्शन द्वारा delete कर दिया गया है। तो इस तरह आप सेशन की जानकारी को बदल सकते हैं।

एक सेशन को कैसे डिस्ट्रॉय करें

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

आइए समझने की कोशिश करें कि यह निम्न उदाहरण का उपयोग करके कैसे काम करता है।

session_destroy फ़ंक्शन वर्तमान सेशन में स्टोर हुए सब कुछ को हटा देता है। इस प्रकार, आप बाद के रिक्वेस्ट्स से रिक्त $_SESSION वेरिएबल देखेंगे क्योंकि डिस्क पर संग्रहीत सेशन डेटा session_destroy फ़ंक्शन द्वारा हटा दिया गया था।

आम तौर पर, जब यूजर लॉग आउट होता है तो आप session_destroy फ़ंक्शन का उपयोग करेंगे।

निष्कर्ष

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

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

Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.