14

セッションをデータベースに保存するにはどうすればよいですか? 私はこのコードを使用してそれを行いました:

 function write ($session_id, $session_data)
// write session data to the database.
{
    if (!empty($this->fieldarray)) {
        if ($this->fieldarray['session_id'] != $session_id) {
            // user is starting a new session with previous data
            $this->fieldarray = array();
        } // if
    } // if

    if (empty($this->fieldarray)) {
        // create new record
        $array['session_id']   = $session_id;
        $array['date_created'] = getTimeStamp();
        $array['last_updated'] = getTimeStamp();
        $array['session_data'] = addslashes($session_data);
        $this->_dml_insertRecord($array);
    } else {
        // update existing record
        if (isset($_SESSION['logon_user_id'])) {
            $array['user_id']  = $_SESSION['logon_user_id'];
        } // if
        $array['last_updated'] = getTimeStamp();
        $array['session_data'] = addslashes($session_data);
        $this->_dml_updateRecord($array, $this->fieldarray);
    } // if

    return TRUE;

} // write

しかし、以前のように自動的に削除するにはどうすればよいですか。タイムアウト後にセッションを自動的に削除する方法を意味しますか?

4

2 に答える 2

0

HTTP_Session2を見てください。PEAR ドキュメントから:

HTTP_Session2は、DB および MDB2 パッケージを使用したセッション データのデータベース ストレージなどの追加機能を提供します。また、isNew()、useCookies()、setExpire()、setIdle()、isExpired()、isIdled() などの新しいメソッドも導入されています。

自分のものを実装したい場合は、MDB2.phpそのパッケージ内のコードを見てください。これにはガベージ コレクション メソッド (gc) が含まれており、 session_set_save_handlerと組み合わせるとうまくいくはずです。

于 2017-10-13T20:20:34.707 に答える