Yii - सत्र

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

जब एक सत्र शुरू होता है, तो निम्न होता है -

  • PHP उस विशेष सत्र के लिए एक विशिष्ट आईडी बनाता है।

  • PHPSESSID नामक कुकी क्लाइंट की ओर (ब्राउज़र में) भेजी जाती है।

  • सर्वर अस्थायी फ़ोल्डर में एक फ़ाइल बनाता है जहां सभी सत्र चर सहेजे जाते हैं।

  • जब कोई सर्वर सत्र चर से मान प्राप्त करना चाहता है, तो PHP स्वचालित रूप से PHPSESSID कुकी से अद्वितीय सत्र आईडी प्राप्त करता है। फिर, यह आवश्यक फ़ाइल के लिए इसकी अस्थायी निर्देशिका में दिखता है।

एक सत्र शुरू करने के लिए, आपको कॉल करना चाहिए session_start()समारोह। सभी सत्र चर में संग्रहीत हैं$_SESSIONवैश्विक चर। आप भी उपयोग कर सकते हैंisset() यह जाँचने के लिए कि सत्र चर सेट है या नहीं -

<?php
   session_start();
   if( isset( $_SESSION['number'] ) ) {
      $_SESSION['number'] += 1; }else { $_SESSION['number'] = 1;
   }
   $msg = "This page was visited ". $_SESSION['number'];
   $msg .= "in this session."; echo $msg;
?>

एक सत्र को नष्ट करने के लिए, आपको कॉल करना चाहिए session_destroy()समारोह। एकल सत्र चर को नष्ट करने के लिए, कॉल करेंunset() कार्य -

<?php
   unset($_SESSION['number']);
   session_destroy();
?>

Yii में सत्रों का उपयोग करना

सत्र उपयोगकर्ता के अनुरोधों पर डेटा को बनाए रखने की अनुमति देते हैं। PHP में, आप उन्हें एक्सेस कर सकते हैं$_SESSIONचर। Yii में, आप सत्र अनुप्रयोग घटक के माध्यम से सत्र तक पहुंच प्राप्त कर सकते हैं।

Step 1 - जोड़ें actionOpenAndCloseSession करने की विधि SiteController

public function actionOpenAndCloseSession() {
   $session = Yii::$app->session;
   // open a session
   $session->open(); // check if a session is already opened if ($session->isActive) echo "session is active";
   // close a session
   $session->close(); // destroys all data registered to a session $session->destroy();
}

उपरोक्त कोड में, हम सत्र अनुप्रयोग घटक प्राप्त करते हैं, एक सत्र खोलें, जांचें कि क्या यह सक्रिय है, सत्र बंद करें, और अंत में इसे नष्ट कर दें।

Step 2 - टाइप करें http://localhost:8080/index.php?r=site/open-and-close-session वेब ब्राउज़र के एड्रेस बार में, आपको निम्नलिखित दिखाई देगा।

सत्र चर का उपयोग करने के लिए, आप उपयोग कर सकते हैं set() तथा get() तरीकों।

Step 3 - जोड़ें actionAccessSession करने की विधि SiteController

public function actionAccessSession() {

   $session = Yii::$app->session;
	
   // set a session variable
   $session->set('language', 'ru-RU'); // get a session variable $language = $session->get('language'); var_dump($language);
		  
   // remove a session variable
   $session->remove('language'); // check if a session variable exists if (!$session->has('language')) echo "language is not set";
		  
   $session['captcha'] = [ 'value' => 'aSBS23', 'lifetime' => 7200, ]; var_dump($session['captcha']);
}

Step 4 - पर जाएं http://localhost:8080/index.php?r=site/access-session, आप निम्नलिखित देखेंगे।