public function configure($object, array $options = []) { $manager = new Session\SessionManager(); $manager->setStorage(new Session\Storage\ArrayStorage()); $manager->setSaveHandler(new Session\SaveHandler\Cache(new CacheStorageAdapterMemory())); $manager->setConfig(new Session\Config\StandardConfig()); $session = new Session\Container('Default', $manager); $object->getServiceLocator()->set('Zend\\Session\\Container', $session); }
public function loginAction() { $request = $this->getRequest(); $smarty = $this->getServiceLocator()->get('Smarty'); if ($request->isGet()) { $smarty->assign('error', null); $smarty->display('admin/login.tpl'); } else { $success = true; $error = null; $name = $request->getPost('name'); $password = $request->getPost('password'); $success = false; if (!$name || !$password) { $error = '用户名和密码不能为空'; } else { $tableGateway = $this->getServiceLocator()->get('UserTable'); $users = $tableGateway->findByName($name); if ($users->count() != 1) { $error = '用户名或密码不正确'; } else { $password_additional = $this->getServiceLocator()->get('config')['password_additional']; $realPassword = md5($password . $password_additional); if ($users->current()->getPassword() === $realPassword) { $session = new SessionManager(); $user = $users->current(); $storage = new ArrayStorage(['user' => $user]); if ($session->setStorage($storage)) { $success = true; } else { $error = '写入session失败'; } } else { $error = '密码不正确'; } } } if ($success) { $this->redirect()->toUrl('/admin'); } else { $smarty->assign('error', $error); $smarty->display('admin/login.tpl'); } } }
<?php define('REDBEAN_MODEL_PREFIX', '../Model_'); require __DIR__ . '/../vendor/autoload.php'; require 'rb.php'; /* require '../vendor/autoload.php'; $fvm = \RedBeanFVM\RedBeanFVM::getInstance(); gabordemooij\redbean\RedBeanPHP */ R::setup('mysql:host=localhost;dbname=smemailmf', 'root', ''); use Zend\Session\Config\StandardConfig; use Zend\Session\SessionManager; $config = new StandardConfig(); $config->setOptions(array('remember_me_seconds' => 1800000, 'name' => 'mailmf')); $manager = new SessionManager($config); //var_dump($manager); use Zend\Session\Storage\ArrayStorage; $populateStorage = array('foo' => 'bar'); $storage = new ArrayStorage($populateStorage); $manager = new SessionManager(); $manager->setStorage($storage); //var_dump($manager); /* $book = R::dispense("mail"); $book->author = "Santa Claus"; $book->title = "Secrets of Christmas"; $id = R::store( $book ); */
/** * Retorna o adaptador de sessao * @param string $name * @return SessionContainer */ public function getSessionAdapter($name = 'Default') { if (!isset($_SESSION[$name])) { $sessionConfig = new SessionConfig(); $sessionConfig->setOptions($this->globalConfig['session']); $sessionStorage = new \Zend\Session\Storage\SessionArrayStorage(); $sessionManager = new SessionManager(); $sessionManager->rememberMe($this->globalConfig['session']['remember_me_seconds']); $sessionManager->forgetMe(); $sessionManager->setConfig($sessionConfig); $sessionManager->setStorage($sessionStorage); $sessionNamespace = new SessionContainer($name, $sessionManager); $sessionNamespace->setExpirationSeconds(3600); if (!isset($sessionNamespace->init)) { $request = new \Zend\Http\PhpEnvironment\Request(); $sessionNamespace->init = 1; $sessionNamespace->remoteAddr = $request->getServer('REMOTE_ADDR'); $sessionNamespace->httpUserAgent = $request->getServer('HTTP_USER_AGENT'); /* $chain = $sessionManager->getValidatorChain(); $validatorUserAgent = new \Zend\Session\Validator\HttpUserAgent($sessionNamespace->httpUserAgent); $chain->attach('session.validate', array($validatorUserAgent, 'isValid')); $validatorAddr = new \Zend\Session\Validator\RemoteAddr($sessionNamespace->remoteAddr); $chain->attach('session.validate', array($validatorAddr, 'isValid')); $sessionManager->setValidatorChain($chain); * */ } $sessionNamespace->setDefaultManager($sessionManager); } else { $sessionNamespace = new SessionContainer($name); $sessionNamespace->setExpirationSeconds(3600); } $this->sessionAdapter = $sessionNamespace; return $sessionNamespace; }