Sponsored Content
Top Forums Web Development How do I verify my web visitor is still online Post 302284663 by otheus on Friday 6th of February 2009 04:23:35 AM
Old 02-06-2009
One thing you can do with Apache is to create a seperate logfile with just the Cookie (and access time). You can then send this log through a program which monitors the last time a cookie was used, and if it has gone past the time you want, you remove it from the database. So a configuration in apache would look like:
Code:
CustomLog "|/usr/local/bin/user_tracker" cookies
LogFormat "%v\t%{s}t\t%200{Foobar}C" cookies

Where Foobar is the name of your cookie that identifies the user session.
The logs are sent to a script (/usr/local/bin/user_tracker) like this one:
Code:
#!/usr/bin/perl -n
chomp;
($vhost,$time,$cookie)=split("\t");

# Remember this cookie
$Cookies{$vhost . ":" .  $cookie}=$time;

# Every 5 minutes, scan through cookies and remove obsolete database entries
if ($time >= $next_check)  {
    while ( ($cookie,$cookie_time) = each(%Cookies) ) {
       if ($cookie_time >= $expire_time) {
         delete $Cookie{$cookie}; 
         push @to_delete, $cookie;
       }
    }
    foreach (@to_delete) { 
         ($vhost, $cookie_name, $cookie_value) = m/^(.*?):(.*?)=(.*)/;
         # Insert code here to delete $cookie_value from database
       }
    }
    $next_check = $time + 5*60;    # Check for expired cookies every 5 minutes
    $expire_time = $time + 20*60;   # Expire cookies every 20 minutes
}

 

We Also Found This Discussion For You

1. Post Here to Contact Site Administrators and Moderators

Suggestion: visitor graphs

Perhaps we could think of visitor graphs that would give a sense of both the popularity of the forum and - more importantly - the popularity of Linux and the Open Source operating systems movement. Something similar to what sourceforge has done for their projects: SourceForge.net: Project... (2 Replies)
Discussion started by: figaro
2 Replies
Cookie(3pm)						User Contributed Perl Documentation					       Cookie(3pm)

NAME
APR::Request::Cookie - wrapper for libapreq2's cookie API. SYNOPSIS
use APR::Request::Cookie; # fetch inbound cookie $jar = $req->jar; $cookie1 = $jar->get("cookie1"); # generate new cookie $cookie = APR::Request::Cookie->new($req->pool, name => "foo", value => "bar", domain => "capricorn.com"); print "$cookie"; # prints "bar" $cookie->domain("example.com"); # change domains $cookie->version(1); # upgrade it to conform with RFC 2109/2965. # send a response header print sprintf "Set-Cookie: %s ", $cookie->as_string; DESCRIPTION
The APR::Request::Cookie module provides base methods for interfacing with libapreq2's cookie API. It also provides a few utility functions and constants. This manpage documents version 2.13 of the APR::Request::Cookie package. OVERLOADS
APR::Request::Cookie "" "$cookie" The double-quote interpolation operator maps to "APR::Request::Cookie::value()". ok "$cookie" eq $cookie->value; METHODS
APR::Request::Cookie new APR::Request::Cookie->new($pool, name => $name, value => $value, %args) Creates a new cookie. Here $pool is an APR::Pool object, and $name is the cookie's name. The $value is transformed into the cookie's raw value through the class' "freeze()" method. The remaining arguments are optional: -secure -httponly -version -path -domain -port -expires -comment -commentURL For details on these arguments, please consult the corresponding method's documentation. freeze APR::Request::Cookie->freeze($value) Class method representing the default serializer; here it returns $value unmodified. ok "foo" eq APR::Request::Cookie->freeze("foo"); thaw $cookie->thaw() Reverses "freeze()"; here it simply returns $cookie->value since freeze() is a noop. ok $cookie->thaw eq $cookie->value; name $cookie->name() Fetch the cookie's name. This attribute cannot be modified and is never serialized; ie freeze() and thaw() do not act on the cookie's name. value $cookie->value() Fetch the cookie's raw (frozen) value. This attribute cannot be modified. secure $cookie->secure() $cookie->secure($set) Get/set the cookie's secure flag. $cookie->secure(1); ok $cookie->secure == 1; httponly $cookie->httponly() $cookie->httponly($set) Get/set the cookie's HttpOnly flag. $cookie->httponly(1); ok $cookie->httponly == 1; version $cookie->version() $cookie->version($set) Get/set the cookie's version number. Version 0 cookies conform to the Netscape spec; Version 1 cookies conform to either RFC 2109 or RFC 2965. $version = $cookie->version; $cookie->version(1); ok $cookie->version == 1; path $cookie->path() $cookie->path($set) Get/set the cookie's path string. $path = $cookie->path; $cookie->path("/1/2/3/4"); ok $cookie->path eq "/1/2/3/4"; domain $cookie->domain() $cookie->domain($set) Get/set the cookie's domain string. $domain = $cookie->domain; $cookie->domain("apache.org"); ok $cookie->domain eq "apache.org"; port $cookie->port() $cookie->port($set) Get/set the cookie's port string. Only valid for Version 1 cookies. $port = $cookie->port; $cookie->port(8888); ok $cookie->port == 8888; comment $cookie->comment() $cookie->comment($set) Get/set the cookie's comment string. Only valid for Version 1 cookies. $comment = $cookie->comment; $cookie->comment("quux"); ok $cookie->comment eq "quux"; commentURL $cookie->commentURL() $cookie->commentURL($set) Get/set the cookie's commentURL string. Only valid for Version 1 cookies. $commentURL = $cookie->commentURL; $cookie->commentURL("/foo/bar"); ok $cookie->commentURL eq "/foo/bar"; is_tainted $cookie->is_tainted() $cookie->is_tainted($set) Get/set the cookie's internal tainted flag. $tainted = $cookie->is_tainted; $cookie->is_tainted(1); ok $cookie->is_tainted == 1; make APR::Request::Cookie->make($pool, $name, $value) Fast XS cookie constructor invoked by "new()". The cookie's raw name & value are taken directly from the passed in arguments; no freezing/encoding is done on the $value. as_string $cookie->as_string() String representation of the cookie, suitable for inclusion in a "Set-Cookie" header. print "Set-Cookie: ", $cookie->as_string, " "; SUBROUTINES
APR::Request::Cookie expires expires($date_string) SEE ALSO
Apache2::Cookie, APR::Request. COPYRIGHT
Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to You under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. perl v5.10.1 2011-02-28 Cookie(3pm)
All times are GMT -4. The time now is 02:18 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy