如何在zf2中使用Zend \ Session?

时间:2012-01-24 16:16:10

标签: php session zend-framework2

有人试试zf2吗?我无法理解在zf2中使用会话的新机制。如何在新的zend框架中编写和读取会话?

此外,我在互联网上找不到任何例子。

7 个答案:

答案 0 :(得分:68)

zf2会话使用的一些示例:

会话创建:

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

检查会话中是否存在密钥:

$session->offsetExists('email')

按键从会话中获取值:

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

在会话中设置值:

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

在会话中取消设置值:

$session->offsetUnset('email');

使用会话的其他简单方法是:

$session = new Container('foo');

//这些都是同一个目的的等效手段

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

$session->bar = 'foobar';

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

答案 1 :(得分:17)

肯定是的,你应该使用 Zend \ Session \ Container

容器扩展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);

第一个参数是会话命名空间,第二个参数是 Manager ManagerStorageSaveHandler的外观,并且配置了ConfigInterface,以便将会话数据保存在DB或Memcache服务器中。

答案 2 :(得分:3)

我目前正在使用zf2。我发现了Sessions的用法:

Zend\Authentication\Storage\Session.php

也许你可以在那里找到答案。

答案 3 :(得分:1)

如果您尝试在登录操作中使用会话,则可以使用:“Zend\Authentication\AuthenticationService”。它还验证用户和存储会话。

getStorage()->write($contents)将存储会话。

答案 4 :(得分: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');
 }
?>

希望这可以帮助某人

答案 5 :(得分: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.

答案 6 :(得分:-1)

要开始会话,您需要使用

zend\session\container