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;
}
?>