2012-01-24 5 views
29

क्या कोई भी zf2 आज़माता है? मैं zf2 में सत्रों का उपयोग करने के नए तंत्र को समझ नहीं सकता। मैं नए ज़ेंड फ्रेमवर्क में सत्र से कैसे लिख सकता/पढ़ सकता हूं?zf2 में ज़ेंड सत्र का उपयोग कैसे करें?

इसके अलावा मुझे इंटरनेट में कोई उदाहरण नहीं मिल रहा है।

+1

है कि इसका जवाब वास्तव में मदद की थी सत्र में संग्रहीत डेटा की जांच? आपने क्या खोजा? –

+1

मुझे ज़ेंड \ प्रमाणीकरण \ संग्रहण \ Session.php में एक उदाहरण मिला। उदाहरण के लिए आप इस '$ सत्र-> ऑफ़सेटसेट (' ईमेल ', $ ईमेल) जैसे सत्र में लिख सकते हैं;', यह जांचें कि दायर इस '$ सत्र-> ऑफ़सेट एक्सिस्टिस्ट्स ('ईमेल') की तरह मौजूद है और इस कोड के साथ फ़ील्ड प्राप्त करें निष्पादन: '$ सत्र-> ऑफ़सेट गेट ('ईमेल')'। तो, यह वही है जो मैं देख रहा था। – rdo

+4

सत्र '$ सत्र = नया कंटेनर (' बेस ') द्वारा सत्र भी शुरू किया जा सकता है; जहां कंटेनर एक' ज़ेंड \ सत्र \ कंटेनर' – rdo

उत्तर

68

zf2 सत्र उपयोग के कुछ उदाहरण उपयोग करने की आवश्यकता शुरू करने के लिए:

सत्र निर्माण:

use Zend\Session\Container; 
$session = new Container('base'); 

चेक कि कुंजी सत्र में मौजूद है:

$session->offsetExists('email') 

सत्र से हो रही मूल्य कुंजी द्वारा: सत्र में

$session->offsetSet('email', $email); 

unsetting मूल्य:: सत्र में

$email = $session->offsetGet('email'); 

सेटिंग मूल्य

$session->offsetUnset('email'); 

और अन्य आसान तरीका सत्र का उपयोग कर रहे हैं:

$session = new Container('foo'); 

// ये एक हैं ll बराबर ही अंत

$session['bar'] = 'foobar'; 

$session->bar = 'foobar'; 

$session->offsetSet('bar', 'foobar'); 
+10

ओह, कृपया, ** ArrayAccess ** के तरीकों का सीधे उपयोग न करें। यह moveton है। 'ज़ेंड \ सत्र \ कंटेनर' भी कस्टम ** ArrayObject ** लागू करता है जिसका अर्थ है कि आप ऑब्जेक्ट के साथ ऐसा करने वाले गुणों को सेट, प्राप्त और जांच सकते हैं। – dVaffection

+0

से ऊपर मेरा उत्तर देखें नोटिस या चेतावनी के मामले में आप इसका उपयोग इस प्रकार कर सकते हैं: $ session-> ऑफसेटसेट ('व्यवस्थापक', नया \ stdClass()); फिर: $ सत्र-> व्यवस्थापक-> उपयोगकर्ता नाम = 'जॉन'; –

3

मैं वर्तमान में zf2 के साथ काम कर रहा हूं। मैं में सत्र के उपयोग पाया:

Zend\Authentication\Storage\Session.php

हो सकता है कि आपको वहां अपना उत्तर पा सकते हैं।

17

निश्चित रूप से हाँ, आप Zend \ सत्र \ कंटेनर

कंटेनर ArrayObject के प्रदान करता है और ARRAY_AS_PROPS झंडा आप आसानी से गुण के माध्यम से पुनरावृति और पढ़ सकते हैं इसका मतलब है कि के साथ को दर्शाता है का उपयोग करना चाहिए का मतलब/उन्हें लिखें, उदाहरण के लिए प्रबंधक -

use Zend\Session\Container as SessionContainer; 

$this->session = new SessionContainer('post_supply'); 
$this->session->ex = true; 
var_dump($this->session->ex); 

पहले तर्क सत्र नाम स्थान और पीछे नहीं है। ManagerStorage और SaveHandler के लिए एक मुखौटा है और यह डीबी या मेमकैच सर्वर में अपना सत्र डेटा सहेजने के लिए ConfigInterface के साथ कॉन्फ़िगर किया गया है।

+1

संरक्षित क्षेत्रों या विधियों के लिए अंडरस्कोर का उपयोग अब और अधिक आधुनिक नहीं है;)। मुख्य रूप से क्योंकि आधुनिक आईडीई अभ्यास अप्रचलित बनाते हैं और अंडरस्कोर सामान को बदसूरत लगते हैं। – markus

+0

2 मार्कस-थर्कुन हाँ, मुझे पता है और अब इसका उपयोग नहीं करते हैं;) – dVaffection

+0

मैं ज़ेंड का एक शुरुआत कर रहा हूं। मैं जानना चाहता हूं कि zf2 में सत्रकंटनर का उपयोग कैसे करें। मेरी राय में, एक वेब एप्लिकेशन में केवल एक सत्र होना चाहिए, ठीक है? तो नियंत्रक में sessionContainer कैसे प्राप्त करें और देखें? – inza9hi

1

यदि आप अपनी लॉगिन कार्रवाई में सत्र का उपयोग करने का प्रयास कर रहे हैं, तो आप इसका उपयोग कर सकते हैं: "Zend\Authentication\AuthenticationService"। यह उपयोगकर्ता और स्टोर सत्र को भी प्रमाणित करता है।

getStorage()->write($contents) सत्र संग्रहीत करेगा।

0

अच्छी तरह से यहां संक्षिप्त उदाहरण है। मैंने उपयोगकर्ता के सफल प्रमाणीकरण पर सत्र बनाए रखने के संबंध में लागू किया है।

<?php 
$registry = Zend_Registry::getInstance(); 
$DB = $registry['DB']; 
$authAdapter = new Zend_Auth_Adapter_DbTable($DB); 
$authAdapter->setTableName('user'); 
$authAdapter->setIdentityColumn("user_name"); 
$authAdapter->setCredentialColumn("user_password"); 
//get values 
$username = $request->getParam('username'); 
$password = $request->getParam('password'); 
//set values 
$authAdapter->setIdentity($username); 
$authAdapter->setCredential($password); 

$auth = Zend_Auth::getInstance(); 
//to store in session 
$auth->setStorage(new Zend_Auth_Storage_Session('front')); 

$authResult = $auth->authenticate($authAdapter); 
if ($authResult->isValid()) { 
    $authAdap = $authAdapter->getResultRowObject(null, "Password"); 
    $auth->getStorage()->write($authAdap); 
    $this->_redirect('/login/controlpannel'); 
} else { 
    $this->_redirect('/login/login'); 
} 
?> 

मान रही या उपयोगकर्ता से संबंधित

<?php 
$auth = Zend_Auth::getInstance(); 
$auth->setStorage(new Zend_Auth_Storage_Session('front')); 
if($auth->hasIdentity()){ 
    $data = $auth->getStorage()->read(); 
    print_r($data); 
}else{ 
    $this->_redirect('/login/login'); 
} 
?> 

आशा है कि यह मदद कर सकता है किसी को

+0

यह उत्तर जुलाई 11, 2014 को पोस्ट किया गया था, जुलाई 2011 में नहीं। –

0
use Zend\Session\Container; 

public function createAction(){ 
    $session = new Container('name'); 
    $session->offsetSet('session_variable', $value); 
} 
//the above codes are used for create session. 

public function take_valuesAction(){ 
    $session = new Container('name'); 
    echo $value = $session->offsetGet('session_variable'); 
} 
//the above codes are used for take values from session. 

public function destroyAction(){ 
    $session = new Container('name'); 
    $session->getManager()->destroy(); 
} 
//the above codes are used for destroy the session.