सेशन कैसे सेट करें Codeउदाहरण सहित इग्नाइटर
⚡ स्मार्ट सारांश
CodeIgniter सेशन मैनेजमेंट स्टेटलेस HTTP अनुरोधों में उपयोगकर्ता डेटा संग्रहीत करता है, जिससे एप्लिकेशन लॉग-इन उपयोगकर्ता, कार्ट आइटम या एक बार के फ़्लैश संदेशों को याद रख सकता है। यह उदाहरण फ़्लैश मैसेजिंग और एक सिम्युलेटेड लॉगिन का निर्माण करता है। Codeइग्नाइटर सेशन लाइब्रेरी।

Codeइग्नाइटर सत्र प्रबंधन
यदि आपने पहले डेस्कटॉप एप्लिकेशन विकसित किए हैं, तो आप शायद जानते होंगे कि आप एक ग्लोबल वेरिएबल परिभाषित कर सकते हैं, उसे एक मान असाइन कर सकते हैं और एप्लिकेशन के पूरे जीवन चक्र में उसका उपयोग कर सकते हैं। एक से अधिक फॉर्म खोलने और बंद करने पर, प्रत्येक अनुरोध को ग्लोबल वेरिएबल तक पहुंच प्राप्त होगी।
दूसरे शब्दों में, एप्लिकेशन की स्थिति बरकरार रहती है। कहने का तात्पर्य यह है कि यदि आपने लॉगिन करते समय कंपनी का नाम एक वैश्विक चर में सेट किया था, तो लॉगिन फ़ॉर्म बंद करने के बाद भी कंपनी के नाम की वह स्थिति सुरक्षित रहती है।
HTTP उस परिदृश्य से थोड़ा अलग तरीके से काम करता है जिसका हमने अभी वर्णन किया है। यह स्टेटलेस है। यानी, एक रिक्वेस्ट में आप जो कुछ भी करते हैं, वह अगली रिक्वेस्ट में बरकरार नहीं रहता।
इस समस्या से निपटने के लिए, हमारे पास PHP में दो (2) समाधान हैं। हम या तो कुकीज़ के साथ काम कर सकते हैं, जो उपयोगकर्ता के कंप्यूटर पर रखी गई छोटी फ़ाइलें होती हैं, या सत्रों के साथ काम कर सकते हैं, जो कुकीज़ के समान होते हैं लेकिन सर्वर पर संग्रहीत होते हैं और कुकीज़ की तुलना में उनकी क्षमता अधिक होती है।
सत्र का उपयोग कब करें?
सेशन आमतौर पर तब उपयोगी होते हैं जब आप उपयोगकर्ता की गतिविधियों को अलग-अलग पेजों पर जानना चाहते हैं। उदाहरण के लिए, मान लीजिए कि आपकी वेबसाइट पर एक सुरक्षित क्षेत्र है। उपयोगकर्ताओं को हर पेज पर लॉग इन करने की आवश्यकता नहीं है। आप उपयोगकर्ता को एक बार लॉग इन करने दे सकते हैं और उनके विवरण को एक सेशन वेरिएबल में स्टोर कर सकते हैं, फिर आगे के अनुरोधों पर उसी डेटा का पुनः उपयोग कर सकते हैं। अन्य उपयोगों में किसी वेबसाइट पर काम करना शामिल है।ping सिस्टम और उपयोगकर्ता को दुकान में आइटम जोड़ने होंगे।ping गाड़ी।
वैकल्पिक रूप से, CodeIgniter डेटा को अगले अनुरोध पर केवल एक बार उपलब्ध कराने के लिए सेशन का उपयोग करता है। यह तब उपयोगी होता है जब आपने डेटाबेस रिकॉर्ड को संपादित और अपडेट किया हो, और आप उपयोगकर्ता को किसी अन्य पृष्ठ पर रीडायरेक्ट किए जाने पर कुछ प्रतिक्रिया देना चाहते हों।
CI सत्रों के साथ अन्य पृष्ठों पर फ़्लैश संदेश भेजना
इस अनुभाग में, आप सत्र लाइब्रेरी का उपयोग करके अन्य पृष्ठों पर फ़्लैश संदेश भेजने के बारे में जानेंगे। Codeआग लगनेवाला.
एक नई फ़ाइल SessionController बनाएँ
application/controllers/SessionController.php
निम्नलिखित कोड जोड़ें
<?php defined('BASEPATH') OR exit('No direct script access allowed'); class SessionController extends CI_Controller { public function __construct() { parent:: __construct(); $this->load->helper('url'); $this->load->library('session'); } public function index() { $this->load->view('sessions/index'); } public function flash_message(){ $this->session->set_flashdata('msg', 'Welcome to CodeIgniter Flash Messages'); redirect(base_url('flash_index')); } }
यहाँ,
- class SessionController extends CI_Controller {…} SessionController वर्ग को परिभाषित करता है और पैरेंट नियंत्रक वर्ग को विस्तारित करता है।
- public function __construct() {…} कंस्ट्रक्टर विधि को परिभाषित करता है जो पैरेंट क्लास को आरंभ करता है, और URL हेल्पर और सत्र लाइब्रेरी को लोड करता है।
- सार्वजनिक फ़ंक्शन इंडेक्स() {…} सत्र इंडेक्स विधि को परिभाषित करता है जो सत्र इंडेक्स दृश्य को लोड करता है।
- सार्वजनिक फ़ंक्शन flash_message(){…} फ़्लैश संदेश विधि को परिभाषित करता है जो फ़्लैश डेटा सेट करता है और फिर flash_index रूट पर रीडायरेक्ट करता है
अब आइए वह व्यू बनाएं जो सेशन डेटा का मान प्रदर्शित करेगा।
application/views में sessions नाम की एक नई डायरेक्टरी बनाएं।
application/views/sessions में एक नई फ़ाइल index.php बनाएँ
निम्नलिखित कोड जोड़ें
<html>
<head>
<title>Code Igniter Flash Session</title>
</head>
<body>
<p>The session value of msg is <b> <?= $this->session->userdata('msg');?> </b></p>
</body>
</html>
यहाँ,
session->userdata('msg');?> msg कुंजी के साथ सत्र डेटा का मान प्राप्त करता है और इसे ब्राउज़र में प्रदर्शित करता है।
अब आइए हम अपने सेशन फ्लैश मेथड के लिए रूट्स बनाते हैं।
application/config/routes.php खोलें
निम्नलिखित पंक्तियाँ जोड़ें
$route['flash_index'] = 'sessioncontroller'; $route['flash_message'] = 'sessioncontroller/flash_message';
अब हम अंतर्निहित सर्वर को प्रारंभ करते हैं PHP और हमारे फ़्लैश संदेशों का परीक्षण करें
टर्मिनल खोलें
निम्न आदेश चलाएँ
cd C:\Sites\ci-app php -S localhost:3000
यहाँ,
उपरोक्त कमांड एप्लिकेशन कोड डायरेक्टरी को ब्राउज़ करता है और पोर्ट 3000 पर अंतर्निहित सर्वर को प्रारंभ करता है।
ध्यान दें: एप्लिकेशन का पाथ उस पाथ से मेल खाना चाहिए जहाँ से आपने इसे डाउनलोड किया है। CodeIgniter का उपयोग करें और आप अपने कंप्यूटर पर उपलब्ध किसी भी पोर्ट नंबर का उपयोग कर सकते हैं। पोर्ट 3000 का उपयोग करना आवश्यक नहीं है।
निम्नलिखित को लोड करें URL अपने वेब ब्राउज़र में: http://localhost:3000/flash_message
आपको निम्नलिखित पृष्ठ पर पुनर्निर्देशित किया जाएगा। URL, और आपको निम्नलिखित परिणाम मिलेंगे: http://localhost:3000/flash_index
अपने वेब ब्राउज़र के रिफ्रेश बटन पर क्लिक करें या F5 दबाएँ
अब आपको निम्नलिखित परिणाम मिलेंगे
CI सत्रों में उपयोगकर्ता डेटा संग्रहीत करना
आइए अब एक थोड़े अधिक उन्नत उदाहरण को देखें। इसे सरल बनाने के लिए, हम उपयोगकर्ता प्रमाणीकरण का अनुकरण करेंगे और डेटाबेस में उपयोगकर्ता रिकॉर्ड और सबमिट किए गए पासवर्ड को सत्यापित करने की वास्तविक प्रक्रिया नहीं करेंगे।
चलिए मार्गों से शुरू करते हैं
एप्लिकेशन/कॉन्फ़िगरेशन में स्थित routes.php खोलें
निम्नलिखित मार्ग जोड़ें
$route['login'] = 'sessioncontroller/login'; $route['authenticate'] = 'sessioncontroller/authenticate'; $route['settings'] = 'sessioncontroller/settings'; $route['dashboard'] = 'sessioncontroller/dashboard'; $route['logout'] = 'sessioncontroller/logout';
यहाँ,
- $route['login'] = 'sessioncontroller/login'; लॉगिन फ़ॉर्म प्रदर्शित करने वाले रूट को परिभाषित करता है
- $route['authenticate'] = 'sessioncontroller/authenticate'; वह रूट परिभाषित करता है जो सफल उपयोगकर्ता लॉगिन का अनुकरण करता है और सत्र लॉगिन डेटा सेट करता है।
- $route['settings'] = 'sessioncontroller/settings'; एक संरक्षित पृष्ठ को परिभाषित करता है जो केवल लॉग इन उपयोगकर्ताओं के लिए ही सुलभ होना चाहिए
- $route['dashboard'] = 'sessioncontroller/dashboard'; एक संरक्षित पृष्ठ को परिभाषित करता है जो केवल लॉग इन उपयोगकर्ताओं के लिए ही सुलभ होना चाहिए।
- $route['logout'] = 'sessioncontroller/logout'; सत्र डेटा को नष्ट करके उपयोगकर्ता को लॉग आउट करता है
अब हम सेशन कंट्रोलर को अपडेट करते हैं।
application/controllers/SessionController.php खोलें
निम्नलिखित विधियाँ जोड़ें
public function check_auth($page) { if (!$this->session->userdata('logged_in')) { $this->session->set_flashdata('msg', "You need to be logged in to access the $page page."); redirect('login'); } } public function login() { $this->load->view('sessions/login'); } public function authenticate() { $this->session->set_userdata('username', 'John Doe'); $this->session->set_userdata('logged_in', TRUE); redirect(base_url('dashboard')); } public function dashboard() { $this->check_auth('dashboard'); $this->load->view('sessions/dashboard'); } public function settings() { $this->check_auth('settings'); $this->load->view('sessions/settings'); } public function logout() { $this->session->unset_userdata('username'); $this->session->unset_userdata('logged_in'); redirect(base_url('login')); }
यहाँ,
- public function check_auth($page) {…} वह विधि परिभाषित करती है जो यह जांचती है कि उपयोगकर्ता लॉग इन है या नहीं, और फिर उसे पेज तक पहुंच की अनुमति देती है। यदि उपयोगकर्ता लॉग इन नहीं है, तो उसे एक फ्लैश संदेश के साथ लॉगिन पेज पर रीडायरेक्ट कर दिया जाता है।
- public function login() {…} सेशंस डायरेक्टरी में स्थित लॉगिन व्यू को लोड करता है।
- पब्लिक फंक्शन ऑथेंटिकेट() {…} लॉग इन और यूजरनेम कुंजियों के लिए सत्र उपयोगकर्ता डेटा सेट करता है। नोट: हम डेटाबेस के विरुद्ध किसी भी लॉगिन विवरण की पुष्टि नहीं कर रहे हैं। हम केवल यह मान रहे हैं कि सबमिट किए गए विवरण ठीक हैं और सत्र डेटा सेट करते हैं।
- public function dashboard() {…} $this->check_auth('dashboard') को कॉल करने के बाद डैशबोर्ड पेज लोड करता है; जो सत्यापित करता है कि logged_in सत्र कुंजी सेट है।
- public function settings() {…} सेटिंग पेज लोड करता है, जो कि संरक्षित भी है।
- पब्लिक फंक्शन लॉगआउट() {…} सेशन डेटा को नष्ट कर देता है और यूजर को साइन आउट कर देता है। यह विधि लॉगिन पेज पर भी रीडायरेक्ट करती है
Codeइग्नाइटर सेशन व्यूज़
application/views/sessions में निम्नलिखित दृश्य बनाएं
- डैशबोर्ड.php
- लॉगिन.php
- settings.php
डैशबोर्ड.php में निम्नलिखित कोड जोड़ें
<!DOCTYPE html> <html> <head> <title>Dashboard</title> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <link rel="stylesheet" href="https:0 </head> <body> <div class="container"> <div class="column"> <nav class="navbar" role="navigation" aria-label="main navigation"> <div id="navbarBasicExample" class="navbar-menu"> <div class="navbar-start"> <a href="<?= site_url('dashboard')?>" class="navbar-item is-active">Dashboard</a> <a href="<?= site_url('settings')?>" class="navbar-item">Settings</a> </div> <div class="navbar-end"> <div class="navbar-item has-dropdown is-hoverable"> <a class="navbar-link"><?=$this->session->userdata(3);?></a> <div class="navbar-dropdown"> <a class="navbar-item">My Profile</a> <hr class="navbar-divider"> <a class="navbar-item">Sign out</a> </div> </div> </div> </div> </nav> <h3>Welcome Page</h3> </div> </div> </body> </html>
यहाँ,
session->userdata('username');?> वह उपयोगकर्ता नाम प्रदर्शित करता है जिसे हमने प्रमाणीकरण विधि में सेट किया है
login.php में निम्नलिखित कोड जोड़ें
<!DOCTYPE html> <html> <head> <title>Login</title> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <link rel="stylesheet" href="https:0 </head> <body> <div class="container"> <div class="column"> <p><?=$this->session->userdata(1);?></p> <form method="post" action="<?= site_url('authenticate')?>"> <div class="field"> <label class="label">Username</label> <div class="control"> <input class="input" type="text" placeholder="Text input"> </div> </div> <div class="field"> <label class="label">Password</label> <div class="control"> <input class="input" type="password" placeholder="Text input"> </div> </div> <div class="field is-grouped"> <div class="control"> <button class="button is-success">Login</button> </div> </div> </form> </div> </div> </body> </html>
यहाँ,
लॉगिन फॉर्म प्रमाणीकरण प्रक्रिया को सबमिट करता है।
निम्नलिखित कोड को settings.php में जोड़ें
<!DOCTYPE html> <html> <head> <title>Settings</title> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <link rel="stylesheet" href="https:0 </head> <body> <div class="container"> <div class="column"> <nav class="navbar" role="navigation" aria-label="main navigation"> <div id="navbarBasicExample" class="navbar-menu"> <div class="navbar-start"> <a href="<?= site_url('dashboard')?>" class="navbar-item">Dashboard</a> <a href="<?= site_url('settings')?>" class="navbar-item">Settings</a> </div> <div class="navbar-end"> <div class="navbar-item has-dropdown is-hoverable"> <a class="navbar-link">Jim Jones</a> <div class="navbar-dropdown"> <a href="#" class="navbar-item">My Profile</a> <hr class="navbar-divider"> <a href="<?= site_url('logout')?>" class="navbar-item">Sign out</a> </div> </div> </div> </div> </nav> <h3>Settings Page</h3> </div> </div> </body> </html>
ये थे हमारे विचार। अब आइए अपने एप्लिकेशन का परीक्षण करें।
इस ट्यूटोरियल में, हम अंतर्निहित PHP वेब सर्वर का उपयोग कर रहे हैं, लेकिन आप PHP का समर्थन करने वाले किसी भी वेब सर्वर का उपयोग कर सकते हैं।
टर्मिनल खोलें
निम्न आदेश चलाएँ
cd C:\Sites\ci-app php -S localhost:3000
यहाँ,
उपरोक्त कमांड एप्लिकेशन कोड डायरेक्टरी को ब्राउज़ करता है और पोर्ट 3000 पर अंतर्निहित सर्वर को प्रारंभ करता है।
ध्यान दें: एप्लिकेशन का पाथ उस पाथ से मेल खाना चाहिए जहाँ से आपने इसे डाउनलोड किया है। CodeIgniter का उपयोग करें और आप अपने कंप्यूटर पर उपलब्ध किसी भी पोर्ट नंबर का उपयोग कर सकते हैं। पोर्ट 3000 का उपयोग करना आवश्यक नहीं है।
निम्नलिखित को खोलें URL अपने वेब ब्राउज़र में: http://localhost:3000/dashboard
आपको निम्नलिखित पृष्ठ पर पुनर्निर्देशित किया जाएगा
लॉगिन बटन पर क्लिक करें
आपको निम्नलिखित परिणाम दिखाई देंगे
लॉग इन करने के बाद, अब हम सत्र डेटा देख पा रहे हैं।




