Why the following code does upadte the visitors hostname in the database bu instead it adds a new row for the same visitor?
What am i missing here?
cookies are setuped correctly though likek this:
%cookie = fetch CGI::Cookie if $ENV{HTTP_COOKIE};
$cookie1 = cookie( -name=>"host", -value=>$host, -expires
+=>"+7d" );
$cookie2 = cookie( -name=>"xronos", -value=>$xronos, -expires
+=>"+7d" );
$cookie3 = cookie( -name=>"visits", -value=>cookie(visits)+1, -expires
+=>"+7d" );
if ( $ENV{HTTP_COOKIE} ) {
$st = $db->prepare( 'SELECT * FROM logs' );
$st->execute();
while ( $row = $st->fetchrow_hashref ) {
if ( cookie(host) eq $row->{host} ) {
$db->do( "UPDATE logs SET visits=visits+1 WHERE host='cookie(
+host)'" ) or die $db->errstr;
}
}
}
elsif ( !$ENV{HTTP_COOKIE} ) {
$db->do( "INSERT INTO logs VALUES (NULL, '$host', '$xronos', '$file
+', 1)" ) or die $db->errstr;
}
The Devil Is In The Details!