2014-03-05 2 views

답변

1

먼저 모든 사용자 세션을 등록해야합니다. 사용자는 다른 브라우저로 동시에 로그인 할 수 있습니다. 모든 세션에 대해 사용자가 세션을 시작한 시간을 등록해야합니다. 일부 의사 코드에서

: 현재 세션은 PHP (기본 로그인 코드)에서만 사용할 수없는 경우뿐만 아니라 세션이 여전히 유효한 경우 다음

use Zend\Session\SessionManager; 

public function login($username, $password) 
{ 
    // do some checks to perform the login 
    // now you have a $user available if login is success 

    // Session holds the session id and a timestamp 
    $manager = new SessionManager; 
    $id  = $manager->getId(); 

    $session = $this->registerSession($user, $id); 
} 

, 당신은 모든 요청에 ​​확인해야 TTL (time-to-live)에 따라 따라서 getAuthenticatedUser()으로 로그인 한 사용자는 다음과 같이 작성하십시오.

use Zend\Session\SessionManager; 

public function getAuthenticatedUser() 
{ 
    $manager = new Sessionmanager; 

    // This is the session id 
    $id = $manager->getId(); 

    // Now get the $session you registered earlier based on $id 

    $now = new DateTime; 
    if ($session->getTTL() > $now) { 
     return false; 
    } 

    // continue and get $user based on $session 
}