Zend Framework Auth
Posted: Mon Jul 07, 2008 7:42 pm
I'm trying to keep a user logged in for as long as the browser remains open, but I'm not having much luck, even with rememberMe() set to a week...
Code: Select all
require_once('Zend'.DS.'Auth.php');
require_once('Zend'.DS.'Auth'.DS.'Storage'.DS.'Session.php');
require_once('Zend'.DS.'Auth'.DS.'Adapter'.DS.'DbTable.php');
$auth = Zend_Auth::getInstance();
Zend_Session::rememberMe(60*60*24*7);
$session = new Zend_Auth_Storage_Session("user");
$auth->setStorage($session);
$authDb = new Zend_Auth_Adapter_DbTable($db,'users','login','pass');
if (!empty($_REQUEST["auth_login"]))
{
$login = $_REQUEST["auth_login"];
$pass = $_REQUEST["auth_pass"];
}
elseif ($auth->hasIdentity())
{
$login = $auth->getIdentity()->login;
$pass = $auth->getIdentity()->pass;
}
else // No login attempted
{
$login = $pass = null;
}
if (!empty($login) && !empty($pass))
{
$authDb->setIdentity($login)->setCredential($pass);
$result = $authDb->authenticate();
if (!$result->isValid())
{
foreach ($result->getMessages() as $message)
{
$msg["error"]->add(trl($message));
}
// Invalidate existing data
//$_SESSION["user"] = "";
$auth->clearIdentity();
}
else // Logged in
{
//$_SESSION["user"] = get_object_vars($authDb->getResultRowObject());
//$data = get_object_vars($authDb->getResultRowObject());
$auth->getStorage()->write($authDb->getResultRowObject());
}
}