Gianni come faccio a creare una sessione persistente ( cookie o sessione ) con lo Zend_Auth
ho scritto questo codice per la gestione del login :
Customers.php
<?php
class Customers
{
function userLogin($username, $password)
{
$auth = Zend_Registry::get('auth');
$auth->setIdentity($username)
->setCredential($password);
return $result = $auth->authenticate();
}
}
CustomersController.php
<?php
class CustomersController extends Zend_Controller_Action
{
public function init()
{
/********* questo metodo l'ho copiato pari pari dal tuo tutorial , cosa fa ??? ***/
$this->_flashMessenger = $this->_helper->getHelper('flashMessenger');
if($this->_hasParam('annulla')) {
$this->_redirect('/');
}
}
public function indexAction()
{
$this->view->title = 'asd';
$customers = new Customers;
}
public function loginAction()
{
$customers = new Customers;
$this->view->title = 'Login';
$filter = new Zend_Filter();
$filter->addFilter(new Zend_Filter_Alnum())
->addFilter(new Zend_Filter_StringToLower());
if(isset($_POST['submit'])) {
$username = $filter->filter($_POST['username']);
$password = $filter->filter($_POST['password']);
$result = $customers->userLogin($username, $password);
echo $username;
switch ( $result->getCode() ) {
case -3 :
$this->view->username = $result->getIdentity();
$this->view->errorMessage = 'Supplied password is not correct';
break;
case -1 :
$this->view->errorMessage = 'Username not found';
break;
case 1 :
header('location: /customers/panel/');
break;
default :
return 'Unknown error';
break;
}
}
}
public function registerAction()
{
/****/
}
}
lo Zend_Auth è instanziato nel file di bootstrap:
index.php
<?php
set_include_path(get_include_path().';'.'C:\Programmi\Apache Group\Apache2\htdocs\sms3\application\library\\'.';'.'.\application\models');
require_once 'Zend/Loader.php';
Zend_Loader::registerAutoload();
date_default_timezone_set('Europe/Rome');
try {
$options = array(
'host' => 'localhost',
'username' => 'root1',
'password' => 'ppixellol',
'dbname' => 'sms'
);
$db = Zend_Db::factory('Pdo_Mysql', $options);
$db->getConnection();
$auth = new Zend_Auth_Adapter_DbTable($db, 'users', 'name', 'pass');
$acl = new Zend_Acl();
$acl->addRole(new Zend_Acl_Role('guest'));
$acl->addRole(new Zend_Acl_Role('registred'));
$acl->addRole(new Zend_Acl_Role('administrator'));
$acl->allow('guest', null, 'view');
$acl->allow('administrator');
} catch (Zend_Auth_Adapter_Exception $e) {
die("Errore durante l'istanziazione del sistema di autenticazione: ".$e->getMessage());
} catch (Zend_Db_Adapter_Exception $e) {
die("Zend_Db_Adapter_Exception: ".$e->getMessage());
} catch (Zend_Exception $e) {
die("Zend_Exception".$e->getMessage());
}
Zend_Registry::set('auth', $auth);
Zend_Registry::set('db', $db);
define('BASE_URL', str_replace('index.php','',$_SERVER['PHP_SELF']));
Zend_Controller_Front::run('application/controllers');
PS : Come uso Zend_Acl con Zend_Auth in modo che siano gestiti anche i permessi ??
devo salvare il rank dell'utente nel database e poi fare cosa???
:bye: