2011-02-06 1 views
0

これらの2つの概念を悪いアプローチで結びつけていますか?セッションと認証を処理するための「きれいかつ適切なOO」の方法は何ですか?

現在、私はすべてのセッション処理と、ユーザがconfig.incファイルをログアウトしたいかどうかを委任しています。私はAuthクラスを書いていたので、私のAuthクラスが私のconfig.incのロジックの大部分を占めているかどうか疑問に思っていました。それにもかかわらず、私は確かにこれを扱うよりエレガントな方法があると確信しています...

これは私が私のconfig.incに持っているものです(このコードの大きな塊は、ソース._を見つけることができません):

ini_set('session.name', 'SID'); 

# session management 
session_set_cookie_params(24*60*60); // set SID cookie lifetime 
session_start(); 
if(isset($_SESSION['LOGOUT']) { 
    session_destroy(); // destroy session data 
    $_SESSION = array(); // destroy session data sanity check 
    setcookie('SID', '', time() - 24*60*60); // destroy session cookie data 
    #header('Location: '.DOCROOT); 
} elseif(isset($_SESSION['SID_AUTH'])) { // verify user has authenticated 

    if (!isset($_SESSION['SID_CREATED'])) { 
     $_SESSION['SID_CREATED'] = time(); 
    } elseif (time() - $_SESSION['SID_CREATED'] > 6*60*60) { 
     // session started more than 6 hours ago 
     session_regenerate_id(); // reset SID value 
     $_SESSION['SID_CREATED'] = time(); // update creation time 
    } 

    if (isset($_SESSION['SID_MODIFIED']) && (time() - $_SESSION['SID_MODIFIED'] > 12*60*60)) { 
     // last request was more than 12 hours ago 
     session_destroy(); // destroy session data 
     $_SESSION = array(); // destroy session data sanity check 
     setcookie('SID', '', time() - 24*60*60); // destroy session cookie data 
    } 

    $_SESSION['SID_MODIFIED'] = time(); // update last activity time stamp 
} 
+1

このブログを参照してください:http://blog.stackoverflow.com/2011/01/real-questions-have-answers/ FAQ:http://stackoverflow.com/faq具体的には、あなたの質問はこの例のようなものです。「あなたの答えは質問と共に提供され、さらに答えが得られると思います:「私は______に______を使用します、あなたは何を使用しますか?」「あなたの質問は良いですが、このような主観的な質問に関連するhttp://programmers.stackexchange.comでそれを楽しませる。 – Stephen

+0

さて、削除してクロスポストしましたか? – asdfqwer

答えて

2

あなたはフレームワークを気にして、よりエレガントな方法を探し、Zend_Authに見ていない場合 - それは、認証および下で行われる必要があるすべてのセッションのものを処理します。フード。これにより、セッション記憶域または認証データ永続性のための他のメカニズムのいずれかを接続することができます。

私は、認証とストレージが緊密に結合されるべきではないと言っていますが、前者は後者に対するインターフェースを定義し、オプションとしてセッションを取る必要があります。

関連する問題