[Powered by Google Translate] [PHP सत्र] [टॉमी MacWilliam, हार्वर्ड विश्वविद्यालय] [यह CS50 है.] [CS50.TV] PHP में सत्र कार्यक्षमता को लागू करने के लिए इस्तेमाल किया जा सकता है, उपयोगकर्ता लॉगिन तरह, अपने वेब अनुप्रयोग में. PHP सत्र आप जानकारी संबद्ध करने की अनुमति उपयोगकर्ता के पूरे ब्राउज़िंग सत्र के साथ के बजाय सिर्फ एक ही पृष्ठ से. उपयोगकर्ता अपनी वेबसाइट को बनाने वाली विभिन्न PHP पृष्ठों का दौरा किया तो जैसा कि इसका मतलब है, सत्र में किसी भी जानकारी रहेंगे. तो इसका मतलब है कि एक पृष्ठ से सत्र में संग्रहीत डेटा बाद में एक अन्य पेज से पहुँचा जा सकता है. एक सत्र में सूचना के संचय, आसान है और हम, अंडरस्कोर, डॉलर के हस्ताक्षर के माध्यम से इतनी पूंजी सत्र चर करना. डॉलर के हस्ताक्षर, जाओ, अंडरस्कोर, सत्र अभी डॉलर के हस्ताक्षर की तरह, अंडरस्कोर और डॉलर के हस्ताक्षर, अंडरस्कोर बाद महत्वपूर्ण मूल्य जोड़े से मिलकर एक साहचर्य सरणी है. तो हम, सत्र को रेखांकित वाक्य रचना की तरह डॉलर के हस्ताक्षर का उपयोग कर सकते हैं ब्रैकेट, भाव, Foo, बोली, वर्ग,, भाव, बराबर होती बार, बोली कुंजी में मूल्य "बार" स्टोर करने के लिए "foo." हालांकि, हम लिखने या सत्र सरणी से पढ़ने से पहले, हम एक विशेष समारोह में कॉल करने के लिए की आवश्यकता होगी सत्र) (, शुरू, अंडरस्कोर - और इस सत्र को प्रारंभ होगा. तो चलिए एक उदाहरण पर एक नज़र रखना. हमारा पहला पेज, hello.php, उपयोगकर्ता उत्पादन करने के लिए कुछ डेटा सत्र का उपयोग करता है. हम किसी भी सत्र के डेटा का उपयोग कर सकते हैं इससे पहले कि हम session_start का उपयोग करने की आवश्यकता होगी, याद रखें. अब हम एक चाबी मौजूद है, तो यह निर्धारित करने के लिए है PHP isset का उपयोग कर रहे हैं $ देखना साहचर्य सरणी में. उस कुंजी मौजूद है, कि, उपयोगकर्ता में लॉग इन किया है इसका मतलब इसलिए हम उपयोगकर्ता का नाम प्रदर्शित करेंगे. उस कुंजी सेट नहीं है, कि, अभी तक में लॉग इन नहीं है इसका मतलब इसलिए हम login.php के लिए एक लिंक प्रदर्शित करेंगे. तो चलो login.php पर एक नजर डालते हैं. यहाँ नीचे, हम एक ही इनपुट के साथ एक HTML फार्म है. फार्म की कार्रवाई गुण, $ _SERVER ['PHP_SELF'] है और इस बस, हम फार्म मौजूदा फ़ाइल को प्रस्तुत करना चाहते हैं, इसका मतलब जो, इस मामले में, login.php है. तो चलो वापस इस फाइल के शीर्ष पर चलते हैं. उपयोगकर्ता प्रपत्र प्रस्तुत करते हैं, तो $ _POST ['नाम'] सेट किया जाना चाहिए. HTML रूपों और पद के बारे में अधिक जानकारी के लिए, PHP वेब विकास वीडियो देखें. उपयोगकर्ता फार्म जमा किया था उस मामले में, हम वे सत्र में में लिखे गए मूल्य लिखना चाहते हैं. अब हम hello.php करने के लिए उपयोगकर्ता अनुप्रेषित कर सकते हैं. हम सत्र में उपयोगकर्ता के इनपुट संग्रहीत किया है, hello.php login.php में स्थापित किया गया था कि मूल्य का उपयोग करने में सक्षम हो जाएगा. तो चलो इस एक वेब ब्राउज़र में बाहर की जाँच करते हैं. सबसे पहले, हम http://localhost/hello.php लिए जाएंगे. हम, हम अभी तक में लॉग इन नहीं है कि यहाँ देख सकते हैं तो चलो login.php करने के लिए हमें रीडायरेक्ट करेगा जो कडी, क्लिक करते हैं. ठीक है, मैं तो सत्र में संग्रहीत किया जाएगा, जो मेरे नाम में टाइप करेंगे. महान! अब हम सत्र के माध्यम से hello.php पर login.php से अपने इनपुट देख सकते हैं. तो, क्या उपयोगकर्ता लॉग आउट के बारे में? खैर, उपयोगकर्ता में लॉग इन करने के क्रम में, हम केवल सत्र के नाम में कोई मान संग्रहीत. इसलिए उपयोक्ता को लॉग आउट करने के लिए, हम तो सिर्फ उस नाम कुंजी को दूर करने की जरूरत है सत्र सरणी से. तो logout.php, चलो यह पिछले फ़ाइल पर एक नज़र रखना. एक बार फिर, हम) (session_start फोन करने की आवश्यकता होगी हम संबंधित कुछ सत्र करने से पहले. अब हम बस) (session_destroy कॉल कर सकते हैं सत्र में सभी डेटा से छुटकारा पाने का ख्याल रखना होगा, जो और फिर वापस hello.php के लिए उपयोगकर्ता अनुप्रेषित. तो मैं बाहर प्रवेश करें लिंक पर क्लिक करते हैं, हम सर्वर मैं कौन हूँ भूल गया है कि देख सकते हैं, और मैं अब कोई अंदर प्रवेश कर रहा हूँ तो क्या हुड के नीचे हो रहा है यहाँ? हम सिर्फ देखा व्यवहार प्राप्त करने के लिए, हमारे सर्वर 2 बातें करने की जरूरत है. सबसे पहले, सर्वर किसी भी तरह सत्र में डेटा स्टोर करने की जरूरत है. एक वेबसाइट है कि शामिल विभिन्न PHP फाइलों PHP दुभाषिया के अलग invocations के रूप में क्रियान्वित कर रहे हैं इसलिए स्थानीय चर उन दोनों के बीच साझा नहीं किया जा सकता है. इसके बजाय, सर्वर हमारे सत्र डाटा स्टोर करने की जरूरत है कुछ जगह में है कि कई. PHP फ़ाइलों का उपयोग कर सकते हैं. दूसरा, सर्वर केवल अपने ब्राउज़िंग सत्र के साथ सत्र के डेटा को संबद्ध करने की जरूरत है. मैं फेसबुक पर लॉगइन, जब यह भी एक ही समय में फेसबुक में लॉग इन अन्य लोगों के लाखों वहाँ शायद रहे हैं. लेकिन सर्वर मेरे डेटा जोड़ का कोई रास्ता जरूरत मेरे वर्तमान सत्र और एक और सत्र के साथ किसी और के डेटा के साथ. सौभाग्य से, पीएचपी के लेखकों, हमारे लिए इस के बारे में सोचा इसलिए हम इस के किसी भी खुद को लागू करने की जरूरत नहीं है. लेकिन PHP डिफ़ॉल्ट रूप से क्या करता है पर एक नज़र रखना. मैं पहली बार के लिए session_start युक्त एक PHP पृष्ठ पर जाते हैं, PHP एक बड़े यादृच्छिक मूल्य उत्पन्न होगा. Session_destroy बुलाया जाता है या मैं एक के लिए है कि साइट पर किसी भी PHP पृष्ठों पर न जाएं, जबकि जब तक कि बिना सोचे समझे और शायद अनूठा मूल्य मेरे साथ संबद्ध किया जाएगा. कि जिस तरह से सर्वर मेरे ब्राउज़िंग सत्र की पहचान करने का कोई रास्ता है किसी और के लिए विरोध किया. हम वर्तमान सत्र आईडी पर एक नज़र ले जा सकते हैं PHP समारोह, session_id का उपयोग कर. यहाँ हम केवल हमारे सत्र पहचानकर्ता के मूल्य outputting रहे हैं. तो हम फिर उदाहरण के वेब अनुप्रयोग के लिए लॉग इन हैं, और अब sessid.php नेविगेट करने के लिए, हम पात्रों की इस लंबी स्ट्रिंग देखेंगे, और कहा कि मेरे सत्र के लिए वर्तमान पहचानकर्ता है, और सर्वर है कि मैं कौन हूँ का ट्रैक रखने कैसे है. ठीक है, लेकिन हम केवल आधा समस्या का हल है. ज़रूर, सर्वर अब मुझे पहचान करने का कोई रास्ता है, मैं एक पृष्ठ पर जाएँ लेकिन जब सर्वर है कि एक ही पहचानकर्ता पुन: उपयोग करने की जरूरत है बल्कि एक नया एक पैदा करने की तुलना में. मैं foo.php में एक स्थानीय चर घोषित करते हैं, तो याद रखें और फिर, bar.php जाएँ bar.php foo.php में क्या हुआ यह जानने का कोई तरीका नहीं है. अतः मूलभूत PHP सत्र कार्यान्वयन ब्राउजर सर्वर को याद दिलाना जरूरी है कि जो सत्र आईडी का उपयोग करने के लिए. यह एक कुकी के रूप में कार्यान्वित किया जाता है. एक कुकी में एक स्वादिष्ट स्नैक होने के अलावा बस अपने कंप्यूटर पर एक छोटी पाठ फ़ाइल है एक सर्वर वेब ब्राउज़र के माध्यम से करने के लिए लिख सकते हैं. , पीएचपी session_start के माध्यम से अपने अद्वितीय सत्र आईडी उत्पन्न होने के बाद तो यह एक स्थानीय पाठ फ़ाइल, या एक कुकी में उस पहचानकर्ता स्टोर करने के लिए वेब ब्राउज़र को बताने के लिए जा रहा है. तब वेब ब्राउज़र हर अनुरोध में उस पहचानकर्ता शामिल होंगे यह सर्वर के लिए बनाता है. तो सच में, वेब सर्वर मैं कौन हूँ याद नहीं है. इसके बजाय, वेब ब्राउजर बस अद्वितीय पहचानकर्ता याद कर रहा है कि PHP द्वारा उत्पन्न और फिर लगातार सर्वर याद दिलाता था क्या उस पहचानकर्ता है. मेरे उपयोगकर्ता नाम की तरह इस तरह, सूचना सर्वर नहीं अपने वेब ब्राउज़र पर संग्रहीत किया जाता है. ब्राउज़र बस PHP कि जानकारी संग्रहीत जहां सर्वर बताता है इसलिए PHP इसे प्राप्त कर सकते हैं. इसलिए कि PHP वास्तव में यह जानकारी जमा कर रहा है, जहां सवाल भी जन्म देती है? डिफ़ॉल्ट रूप से, पीएचपी अपने सत्र डाटा स्टोर होगा / tmp, या 'अस्थायी' फ़ोल्डर के अंदर एक फ़ाइल में. PHP निर्धारित कर सकते हैं ताकि उस फ़ाइल का नाम सत्र आईडी शामिल होंगे जो फ़ाइल पढ़ सकते हैं और केवल सत्र आईडी के माध्यम से लिखने के लिए. ठीक है. तो चलो क्रोम डिबगर में नेटवर्क टैब खोल देना शीर्ष सही पर रैंच आइकन के माध्यम से. अब फिर से hello.php को सिर. के hello.php के लिए HTTP अनुरोध पर क्लिक करते हैं और फिर शीर्ष पर क्लिक करें. यहाँ हम, कुकी शीर्ष लेख PHPSESSID नामक एक कुंजी में देख सकते हैं या PHP सत्र आईडी के साथ हमने देखा कि एक ही लंबी स्ट्रिंग है कि एक मूल्य हम sessid.php दौरा किया. इस ब्राउज़र का इस्तेमाल किया जाना चाहिए कि क्या सत्र आईडी सर्वर को याद दिलाता है कि वास्तव में कैसे है. यह एक HTTP शीर्ष लेख में यह भी शामिल है. ठीक है. चलो वापस टर्मिनल के लिए सिर. के PHP डिफ़ॉल्ट रूप से सत्र जानकारी जमा कर रहा है, जहां / tmp, नेविगेट करने के लिए करते हैं. बेशक पर्याप्त, यह अस्थायी फ़ोल्डर के अंदर, यहां एक ही सटीक सत्र पहचान होता है कि एक फ़ाइल है. हम इस फाइल को खोलते हैं, तो हम PHP डिस्क पर मेरे सत्र प्रतिनिधित्व कर रहा है कैसे देख सकते हैं. यहाँ स्ट्रिंग "टॉमी" ',' नाम 'कुंजी के लिए भंडारित किया जा रहा है जो हम उम्मीद कर रहे थे कि क्या वास्तव में है. और कि PHP में सत्र के एक सिंहावलोकन है. क्या हम सिर्फ देखा सत्र की केवल डिफ़ॉल्ट कार्यान्वयन किया गया था. वास्तव में, कई वेबसाइटों इस डिफ़ॉल्ट व्यवहार को बदलने और अधिक कुशलता से PHP सत्र स्टोर करने के लिए प्रदर्शन में सुधार के हित में. मेरा नाम टॉमी है, और इस CS50 है. [CS50.TV]