/[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.2 - (hide annotations)
Sun Dec 1 22:32:45 2002 UTC (21 years, 8 months ago) by joko
Branch: MAIN
Changes since 1.1: +33 -25 lines
+ bugfix: wrong object-hierarchy:
   use $this->site->user->preLogout and/or $this->site->request->overrideReq...
+ documented

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

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