init_session()) { $this->log_event(); } } function init_session() { if(isset($_COOKIE[$this->COOKIE_NAME])) { $uuid = mysql_real_escape_string($_COOKIE[$this->COOKIE_NAME]); $sql = "SELECT id,referer FROM " . $this->TABLE_PREFIX . "sessions WHERE uuid='$uuid'"; $result = mysql_q($sql); if($row = mysql_fetch_assoc($result)) { $this->referer = $row['referer']; return ($this->sessionid = $row['id']); } else { return $this->create_session(); } } else { return $this->create_session(); } } function create_session() { $uuid = $this->uuid(); $ip = mysql_real_escape_string($this->ip()); $useragent = mysql_real_escape_string( isset($_SERVER['HTTP_USER_AGENT'])?$_SERVER['HTTP_USER_AGENT']:''); $this->referer = isset($_SERVER['HTTP_REFERER'])?$_SERVER['HTTP_REFERER']:''; $referer = mysql_real_escape_string($this->referer); $sql = "INSERT INTO " . $this->TABLE_PREFIX . "sessions (uuid, ipnum, useragent, referer) VALUES ('$uuid', INET_ATON('$ip'), '$useragent', '$referer')"; mysql_q($sql); if($this->sessionid = mysql_insert_id()) { $expires = time() + 3*365*24*3600; setcookie($this->COOKIE_NAME, $uuid, $expires, '/', $this->COOKIE_DOMAIN); } return $this->sessionid; } function log_event() { $host = strtolower(isset($_SERVER['HTTP_HOST'])?$_SERVER['HTTP_HOST']:''); $host = preg_replace('/^www\./', '', $host); $uri = reset(explode('?', $_SERVER['REQUEST_URI'])); $params = array(); foreach($this->GET_PARAMS as $k) { if(isset($_GET[$k])) { $params[] = urlencode($k) . '=' . urlencode($_GET[$k]); } } if($params) { $uri .= "?" . implode('&', $params); } $uri = mysql_real_escape_string($uri); $host = mysql_real_escape_string($host); $method = mysql_real_escape_string( strtoupper( isset($_SERVER['REQUEST_METHOD'])?$_SERVER['REQUEST_METHOD']:'')); $sql = "SELECT id FROM " . $this->TABLE_PREFIX . "pages WHERE uri='$uri' AND host='$host' AND method='$method'"; $result = mysql_q($sql); if($row = mysql_fetch_assoc($result)) { $pageid = $row['id']; } else { $sql = "INSERT INTO " . $this->TABLE_PREFIX . "pages (uri, host, method) VALUES ('$uri','$host','$method')"; mysql_q($sql); $pageid = mysql_insert_id(); } $ip = mysql_real_escape_string($this->ip()); $sql = "INSERT INTO " . $this->TABLE_PREFIX . "access (sessionid, pageid, ipnum, userid) VALUES ('" . $this->sessionid . "', '$pageid',INET_ATON('$ip'), @userid)"; return mysql_q($sql); } function uuid() { $result = mysql_q('SELECT UUID()'); return reset(mysql_fetch_row($result)); } function ip() { // may be replaced with smth more sophisticated return isset($_SERVER['REMOTE_ADDR'])?$_SERVER['REMOTE_ADDR']:''; } } function mysql_q($sql) { $result = mysql_query($sql) or die(mysql_error()."
SQL=$sql"); return $result; } ?>