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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.2 - (show annotations)
Sun Dec 1 22:32:45 2002 UTC (21 years, 7 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 <?
2 // -------------------------------------------------------------------------
3 // $Id: Session.php,v 1.1 2002/11/12 05:42:31 joko Exp $
4 // -------------------------------------------------------------------------
5 // $Log: Session.php,v $
6 // Revision 1.1 2002/11/12 05:42:31 joko
7 // + initial checkin
8 //
9 // -------------------------------------------------------------------------
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 //print Dumper($session_exists);
29 if (!is_array($session_exists)) {
30 $this->add_session($session_cfg);
31 } else {
32 $session_cfg["session_uid"] = $session_exists["session_uid"];
33 if ($this->site->user->isLoggedOn()) {
34 //print "val - idle<br>";
35 $this->validate_idle();
36 }
37 //print "val - session<br>";
38 $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 if (!mysql_num_rows($res_exists) > 0) {
85 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
95 //global $cfg, $site, $site_state;
96 global $cfg, $site_state;
97 $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 $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
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 $mus = mysql_fetch_array($res_mus, MYSQL_ASSOC);
112
113 // calculate idletime
114 $time_now = time();
115 $last_date = strtotime($mus[last_date]);
116 $max_idle_date = $last_date + $max_idle_time;
117
118 // check timeout
119 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
129 }
130
131 }
132
133 ?>

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