"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > पीआरजी पैटर्न और फ्लैशिंग के साथ सत्र संचालन

पीआरजी पैटर्न और फ्लैशिंग के साथ सत्र संचालन

2024-08-05 को प्रकाशित
ब्राउज़ करें:696

Session Handling with the PRG pattern and Flashing

हमारे पिछले प्रोजेक्ट में, सत्यापन विफल होने पर सीधे POST अनुरोध से एक दृश्य वापस करना सबसे अच्छा तरीका नहीं था।

समस्या

जब कोई उपयोगकर्ता अमान्य डेटा के साथ लॉगिन फॉर्म सबमिट करता है, तो फॉर्म त्रुटि संदेश प्रदर्शित करता है और उपयोगकर्ता को लॉगिन पृष्ठ पर रीडायरेक्ट करता है। हालाँकि, यदि उपयोगकर्ता पृष्ठ को ताज़ा करता है या दूर जाकर लॉगिन पृष्ठ पर लौटता है, तो वही त्रुटि संदेश बने रहते हैं।

समाधान

इस समस्या को हल करने के लिए, हम त्रुटियों को संग्रहीत करने और पीआरजी पैटर्न को लागू करने के लिए सत्र का उपयोग कर सकते हैं। हम $_SESSION सुपरग्लोबल वैरिएबल में त्रुटियों को संग्रहीत कर सकते हैं और create.php में त्रुटियों के विवरण को इस प्रकार अपडेट कर सकते हैं:

$_SESSION['errors'] = $form->errors();
view('session/create.view.php', [ 'errors' => $_SESSION['errors'] ?? [] ]);

लेकिन इस बदलाव के साथ भी समस्या अभी भी बनी हुई है। इसे हल करने के लिए हमें रिटर्न स्टेटमेंट को इस प्रकार बदलना होगा:

return redirect ('/login');


मैं
यदि कोई त्रुटि होती है तो यह उपयोगकर्ता को लॉगिन पेज पर ले जाता है लेकिन उपयोगकर्ता को त्रुटि नहीं दिखाता है
फिर हम थोड़े समय के बाद सत्र को नष्ट करने के लिए $_SESSION सुपरग्लोबल वेरिएबल को फ्लैश करते हैं:

$_SESSION['_flashed']['errors'] = $form->errors();

अब आप देख सकते हैं कि समस्या हल हो गई है लेकिन इस कोड को दोबारा करने के लिए हमें एक क्लास में पीआरजी विधि जोड़नी होगी

सत्र कक्षा (पीआरजी पैटर्न)

रिफैक्टरिंग के लिए, हम Core/Session.php नामक एक नई फ़ाइल बनाते हैं जिसमें एक सत्र वर्ग होता है जो उपयोगकर्ता सत्रों का प्रबंधन करता है:





  1. फ़्लैश विधि डेटा को $_SESSION['_flash'] सरणी में संग्रहीत करती है, जिसका उपयोग सत्र फ़्लैशिंग के लिए किया जाता है।
  2. गेट विधि जांच करती है कि $_SESSION['_flash'] में फ्लैश किया गया डेटा है या नहीं और उसे वापस कर देता है। यदि नहीं, तो यह नियमित सत्र डेटा या डिफ़ॉल्ट मान लौटाता है।
  3. अनफ़्लैश विधि फ़्लैश किए गए डेटा को अनसेट कर देती है, जिससे यह केवल अगले अनुरोध के लिए उपलब्ध हो जाता है।
  4. पीआरजी पैटर्न को पुट विधि का उपयोग करके सत्र में डेटा संग्रहीत करके, रीडायरेक्ट करके (उदाहरण के लिए, रिटर्न रीडायरेक्ट ('/लॉगिन') का उपयोग करके) लागू किया जाता है, और फिर गेट विधि का उपयोग करके अगले अनुरोध में डेटा पुनर्प्राप्त किया जाता है।

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

विधि है

इस फ़ाइल में, विधि एक बूलियन मान लौटाती है जो यह दर्शाती है कि सत्र में कोई कुंजी मौजूद है या नहीं:

. 

public static function has($key) {
    return (bool) static::get($key);
}

लॉगआउट फ़ंक्शन को पुनः सक्रिय करना

फ़ंक्शन.php फ़ाइल में, हम सत्र वर्ग का उपयोग करने के लिए लॉगआउट फ़ंक्शन को पुन: सक्रिय करते हैं:

Session::destroy();

प्राप्त विधि को पुनः सक्रिय करना

चूंकि परियोजना पहले से ही अच्छा काम कर रही है। लेकिन हमें कोड को एक स्टेटमेंट में समेकित करने के लिए Core/Session.php में गेट मेथड को रिफैक्टर करने की आवश्यकता है:

public static function get($key, $default = null) {
    return $_SESSION['_flash'][$key] ?? $_SESSION[$key] ?? $default;
}

हमारे आज के प्रोजेक्ट को बेहतर दिखने, समझने में आसान बनाने और कोड के प्रदर्शन को बढ़ाने के लिए बहुत सारी रीफैक्टरिंग की गई है।

मुझे आशा है कि आप इसे स्पष्ट रूप से समझ गए होंगे!.

विज्ञप्ति वक्तव्य यह आलेख यहां पुन: प्रस्तुत किया गया है: https://dev.to/ghulam_mujtaba_247/session-handling-with-the-prg-pattern-and-flashing-1jog?1 यदि कोई उल्लंघन है, तो हटाने के लिए कृपया [email protected] पर संपर्क करें यह
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3