/[cvs]/nfo/php/libs/org.netfrag.flib/Tracker/Session.php
ViewVC logotype

Annotation of /nfo/php/libs/org.netfrag.flib/Tracker/Session.php

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.7 - (hide annotations)
Fri Dec 13 00:24:03 2002 UTC (21 years, 8 months ago) by jonen
Branch: MAIN
Changes since 1.6: +9 -1 lines
- added debug Dumper

1 joko 1.1 <?
2     // -------------------------------------------------------------------------
3 jonen 1.7 // $Id: Session.php,v 1.6 2002/12/05 21:46:09 joko Exp $
4 joko 1.1 // -------------------------------------------------------------------------
5 joko 1.2 // $Log: Session.php,v $
6 jonen 1.7 // Revision 1.6 2002/12/05 21:46:09 joko
7     // + global $sessionstate (session-variable)
8     // + function get
9     // + function set
10     //
11 joko 1.6 // Revision 1.5 2002/12/04 10:13:21 joko
12     // - purged old code in validate_session
13     //
14 jonen 1.4 // Revision 1.3 2002/12/03 16:13:21 joko
15     // + bugfix with autologout:
16     // + now just setting some message to site_state here
17     // + no direct getlt! (it's a shortcut function)
18     // + $this->site->user->preLogout(1); as autoload mechanism
19     //
20 joko 1.3 // Revision 1.2 2002/12/01 22:32:45 joko
21     // + bugfix: wrong object-hierarchy:
22     // use $this->site->user->preLogout and/or $this->site->request->overrideReq...
23     // + documented
24     //
25 joko 1.2 // Revision 1.1 2002/11/12 05:42:31 joko
26     // + initial checkin
27     //
28 joko 1.1 // -------------------------------------------------------------------------
29    
30    
31     class Session {
32    
33     //============== session functions=============
34     function &Session() {
35     global $session_cfg;
36     $session_cfg["session_id"] = session_id();
37     $session_cfg["remote_ip"] = $_SERVER["REMOTE_ADDR"];
38     $session_cfg["remote_port"] = $_SERVER["REMOTE_PORT"];
39     $session_cfg["user_agent"] = $_SERVER["HTTP_USER_AGENT"];
40     $session_cfg["http_referer"] = $_SERVER["HTTP_REFERER"];
41     $session_cfg["date"] = date('Y-m-d H:i:s', time());
42 joko 1.6
43     if (session_register_safe('sessionstate')) {
44     }
45    
46 joko 1.1 }
47    
48     function start() {
49     global $session_cfg;
50     $session_exists = $this->exists($session_cfg["session_id"]);
51 joko 1.2 //print Dumper($session_exists);
52 joko 1.1 if (!is_array($session_exists)) {
53     $this->add_session($session_cfg);
54 joko 1.2 } else {
55 joko 1.1 $session_cfg["session_uid"] = $session_exists["session_uid"];
56 joko 1.2 if ($this->site->user->isLoggedOn()) {
57     //print "val - idle<br>";
58     $this->validate_idle();
59     }
60     //print "val - session<br>";
61 joko 1.1 $this->validate_session($session_cfg);
62     }
63     }
64    
65     function validate_session($scfgt) {
66     $this->update_session($scfgt);
67     }
68    
69     function update_session($scfg) {
70     $sql = "UPDATE f_td_sessions SET session_hits=session_hits+1,last_date='$scfg[date]' WHERE session_uid='$scfg[session_uid]'";
71     $res = send_sql($sql);
72     }
73    
74     function add_session($scfg) {
75     //session_start();
76     //session_register('user_status_val');
77     connectdb();
78     $sql="INSERT INTO f_td_sessions VALUES ('','$scfg[session_id]','1','$scfg[remote_ip]','$scfg[remote_port]','$scfg[user_agent]','$scfg[http_referer]','$scfg[date]','$scfg[date]')";
79     $res = send_sql($sql);
80     }
81    
82     function bindUser() {
83     $session_id = session_id();
84     $session_tm = $this->exists($session_id);
85     $date = date('Y-m-d H:i:s', time());
86     $sql = "SELECT mid FROM f_map_user_session WHERE user_uid='$site->user->get('oid')' AND last='1'";
87     if($res = send_sql($sql)) {
88     $row = mysql_fetch_array($res,MYSQL_ASSOC);
89     //if (!mysql_num_rows($res)>0) {
90     $sql2 = "INSERT INTO f_map_user_session VALUES ('','$site->user->get('oid')','$session_tm[session_uid]','$date','','1')";
91     $res2 = send_sql($sql2);
92     }
93     else {
94     //print_r($row);
95     $sql3 = "Update f_map_user_session SET last='0' WHERE mid='$row[mid]'";
96     $res3 = send_sql($sql3);
97     $sql4 = "INSERT INTO f_map_user_session VALUES ('','$site->user->get('oid')','$session_tm[session_uid]','$date','','1')";
98     $res4 = send_sql($sql4);
99     }
100     }
101    
102     function exists($session_id) {
103     // check if sessionID exists
104     connectdb();
105     $sql_exists = "SELECT session_uid,session_id FROM f_td_sessions WHERE session_id='$session_id'";
106     $res_exists = send_sql($sql_exists);
107 joko 1.2 if (!mysql_num_rows($res_exists) > 0) {
108 joko 1.1 return 0;
109     }
110     else {
111     $row = mysql_fetch_array($res_exists, MYSQL_ASSOC);
112     return $row;
113     }
114     }
115    
116     function validate_idle() {
117 joko 1.2
118     //global $cfg, $site, $site_state;
119     global $cfg, $site_state;
120 joko 1.1 $session_id = session_id();
121 joko 1.3
122 joko 1.1 // get "max_idle_time"-time from database
123     $sql = "SELECT pvalue FROM td_global_private WHERE pname='max_idle_time'";
124     $res = send_sql($sql);
125 joko 1.2 $row = mysql_fetch_array($res, MYSQL_ASSOC);
126     $max_idle_time = $row[pvalue];
127    
128     // use a default idle-time of half an hour if database-value is empty
129     if (!$max_idle_time) $max_idle_time = 60 * 30;
130 joko 1.1
131     // get last "access"-time from database
132     $sql_mus = "SELECT last_date FROM f_td_sessions WHERE session_id='$session_id'";
133     $res_mus = send_sql($sql_mus);
134 joko 1.2 $mus = mysql_fetch_array($res_mus, MYSQL_ASSOC);
135 joko 1.1
136     // calculate idletime
137 joko 1.2 $time_now = time();
138 joko 1.1 $last_date = strtotime($mus[last_date]);
139 joko 1.2 $max_idle_date = $last_date + $max_idle_time;
140 joko 1.5
141 joko 1.1 // check timeout
142 joko 1.2 if ($time_now > $max_idle_date) {
143 joko 1.5 // TODO: REVIEW (re-enable?)
144 joko 1.2 // throw user to (re)login-page
145 joko 1.5 // $site->redirect( getlink('/pub/login/') );
146 joko 1.3 $this->site->user->preLogout(1);
147     $this->site->request->overrideRequestIdentifier('/home/logout/');
148 joko 1.2 }
149 joko 1.5
150 joko 1.6 }
151    
152    
153     function get($attribute) {
154     global $sessionstate;
155 jonen 1.7 //print "session - get: " . Dumper($sessionstate) . "<br>";
156 joko 1.6 return $sessionstate[$attribute];
157     }
158    
159     function set($attribute, $value) {
160     global $sessionstate;
161 jonen 1.7 //print "val: " . Dumper($value) . "<br>";
162 joko 1.6 $sessionstate[$attribute] = $value;
163 jonen 1.7 //print "session - set: " . Dumper($sessionstate) . "<br>";
164 joko 1.6 }
165 joko 1.1
166     }
167    
168     ?>

MailToCvsAdmin">MailToCvsAdmin
ViewVC Help
Powered by ViewVC 1.1.26 RSS 2.0 feed