/[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.3 - (hide annotations)
Tue Dec 3 16:13:21 2002 UTC (21 years, 8 months ago) by joko
Branch: MAIN
Changes since 1.2: +13 -7 lines
+ bugfix with autologout:
  + now just setting some message to site_state here
  + no direct getlt! (it's a shortcut function)
  + $this->site->user->preLogout(1);  as autoload mechanism

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

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