source: branches/version-2_4/data/class/helper/SC_Helper_Session.php @ 18734

Revision 18734, 4.3 KB checked in by nanasess, 14 years ago (diff)

Copyright の更新(#601)

  • Property svn:eol-style set to LF
  • Property svn:keywords set to Id Revision Date
  • Property svn:mime-type set to text/x-httpd-php; charset=UTF-8
Line 
1<?php
2 /*
3  * Copyright(c) 2000-2010 LOCKON CO.,LTD. All Rights Reserved.
4  *
5  * http://www.lockon.co.jp/
6  */
7
8 /**
9  * セッション関連のヘルパークラス.
10  *
11  * @package Helper
12  * @author LOCKON CO.,LTD.
13  * @version $Id$
14  */
15class SC_Helper_Session {
16
17    var $objDb;
18
19     // }}}
20     // {{{ constructor
21
22     /**
23      * デフォルトコンストラクタ.
24      *
25      * 各関数をセッションハンドラに保存する
26      */
27     function SC_Helper_Session() {
28         $this->objDb = new SC_Helper_DB_Ex();
29         session_set_save_handler(array(&$this, "sfSessOpen"),
30                                  array(&$this, "sfSessClose"),
31                                  array(&$this, "sfSessRead"),
32                                  array(&$this, "sfSessWrite"),
33                                  array(&$this, "sfSessDestroy"),
34                                  array(&$this, "sfSessGc"));
35     }
36
37     // }}}
38     // {{{ functions
39
40     /**
41      * セッションを開始する.
42      *
43      * @param string $save_path セッションを保存するパス(使用しない)
44      * @param string $session_name セッション名(使用しない)
45      * @return bool セッションが正常に開始された場合 true
46      */
47     function sfSessOpen($save_path, $session_name) {
48         return true;
49     }
50
51     /**
52      * セッションを閉じる.
53      *
54      * @return bool セッションが正常に終了した場合 true
55      */
56     function sfSessClose() {
57         return true;
58     }
59
60     /**
61      * セッションのデータををDBから読み込む.
62      *
63      * @param string $id セッションID
64      * @return string セッションデータの値
65      */
66     function sfSessRead($id) {
67         if (!$this->objDb->sfTabaleExists("dtb_session")) return '';
68         $objQuery = new SC_Query();
69         $arrRet = $objQuery->select("sess_data", "dtb_session", "sess_id = ?", array($id));
70         if (empty($arrRet)) {
71             return '';
72         } else {
73             return $arrRet[0]['sess_data'];
74         }
75     }
76
77     /**
78      * セッションのデータをDBに書き込む.
79      *
80      * @param string $id セッションID
81      * @param string $sess_data セッションデータの値
82      * @return bool セッションの書き込みに成功した場合 true
83      */
84     function sfSessWrite($id, $sess_data)
85     {
86         if (!$this->objDb->sfTabaleExists("dtb_session")) return false;
87         $objQuery = new SC_Query();
88         $count = $objQuery->count("dtb_session", "sess_id = ?", array($id));
89         $sqlval = array();
90         if($count > 0) {
91             // レコード更新
92             $sqlval['sess_data'] = $sess_data;
93             $sqlval['update_date'] = 'Now()';
94             $objQuery->update("dtb_session", $sqlval, "sess_id = ?", array($id));
95         } else {
96             // セッションデータがある場合は、レコード作成
97             if(strlen($sess_data) > 0) {
98                 $sqlval['sess_id'] = $id;
99                 $sqlval['sess_data'] = $sess_data;
100                 $sqlval['update_date'] = 'Now()';
101                 $sqlval['create_date'] = 'Now()';
102                 $objQuery->insert("dtb_session", $sqlval);
103             }
104         }
105         return true;
106     }
107
108     // セッション破棄
109
110     /**
111      * セッションを破棄する.
112      *
113      * @param string $id セッションID
114      * @return bool セッションを正常に破棄した場合 true
115      */
116     function sfSessDestroy($id) {
117         if (!$this->objDb->sfTabaleExists("dtb_session")) return false;
118         $objQuery = new SC_Query();
119         $objQuery->delete("dtb_session", "sess_id = ?", array($id));
120         return true;
121     }
122
123     /**
124      * ガーベジコレクションを実行する.
125      *
126      * 引数 $maxlifetime の代りに 定数 MAX_LIFETIME を使用する.
127      *
128      * @param integer $maxlifetime セッションの有効期限(使用しない)
129      */
130     function sfSessGc($maxlifetime) {
131         // MAX_LIFETIME以上更新されていないセッションを削除する。
132         if (!$this->objDb->sfTabaleExists("dtb_session")) return false;
133         $objQuery = new SC_Query();
134         $where = "update_date < current_timestamp + '-". MAX_LIFETIME . " secs'";
135         $objQuery->delete("dtb_session", $where);
136         return true;
137    }
138}
139?>
Note: See TracBrowser for help on using the repository browser.