2011-03-22 3 views
0

저는 Ajax/PHP 웹 응용 프로그램을 작성하고 있습니다. 대부분의 아약스 호출은 세션에 저장된 사용자 객체에 액세스하는 것을 사용합니다.Ajax 응용 프로그램에서 PHP 세션 사용자를위한 올바른 전략

<?php 

session_start(); 

function session_user() 
{ 
    static $session_user = null; 

    if (!isset($session_user)) 
    { 
    if (isset($_SESSION['user'])) 
     $session_user = unserialize($_SESSION['user']); 
    else 
     $session_user = new User(); 
    } 
    return $session_user; 
} 


class User { 
    public $books_borrowed = array(); 

    public function __construct() 
    { 
    } 

    function __destruct() 
    { 
    // store the user object in the session upon destruction 
    session_start(); 
    $_SESSION[ 'user' ] = serialize($this); 
    }   

    function authorise($user_id, $password) 
    { 
    // if the user_id and password match, load books_borrowed from the DB 
    ... 
    } 

    function deauthorise() 
    { 
    session_destroy(); 
    } 

} 


?> 

아약스 호출은 다음과 같이 사용자 개체에 액세스 :

return session_user()->books_borrowed; 

하는 것으로 지금까지 내가 말할 수있는, 바로 아약스 호출 반환하기 전에 발생, 파괴,시 사용자 개체를 저장 자체.

개체가 파괴 될 때마다 세션에 사용자 개체를 저장하는 이유는 아약스 호출 중에 변경 될 수있는 다른 개체 (책)가 포함되어 있으며 책 개체를 '알기' (재사용을 위해) 사용자 객체에 관해서도 신경 쓰지 않아야한다.

누군가이 전략에 이상이있을 수 있습니까?

감사

답변

0

당신은 아약스와 새로운 애플리케이션에 대한 디자인 뭔가 특별한 약처럼 아약스의 생각하지 되어 있는지 확인 주요 전략. 브라우저에서 정기적으로 요청합니다. 물론 url을 수동으로 입력하고 Enter 키를 눌러 새 페이지를 열 때와 같습니다.

+0

답장을 보내 주셔서 감사합니다.하지만 내 질문과 관련이 있는지 확신 할 수 없습니다. 저는 주로 __destruct에서 세션에 사용자 객체를 저장하는 것이 올바른지에 관심이 있습니다. – Roey

+0

@Roey : 질문과 관련이없는 경우 - 질문에서 아약스에 대한 모든 언급을 제거하십시오. 원래 질문을 난독 화하기 때문입니다. – zerkms

관련 문제