1,105,380 Community Members

automatically unwanted records are inserted

Member Avatar
vizz
Posting Pro in Training
427 posts since Dec 2009
Reputation Points: 0 [?]
Q&As Helped to Solve: 0 [?]
Skill Endorsements: 9 [?]
 
0
 

I have created log.php to get visitors information. It is included on index.php. But it is adding records to database without single visit to index.php.

After few seconds it adds records continuously.

Help me please.

index.php

<?php include_once('log.php');?>

log.php

<?php

    $page_name = $_SERVER['PHP_SELF']; // PAGE NAME 
    $parse_page_name = basename ($page_name); // PARSE THE EXACT PAGE NAME

    // Get the URL
    $host = $_SERVER['SERVER_NAME'];

    // Get the IP Address
    $ipAddress =$_SERVER['REMOTE_ADDR'];

    //format the URL
    //$visitURL = $url.$scriptName;

    $today = date("j, F, Y");  
    $tmzone=date_default_timezone_get();
    $now=strftime("%I:%M:%S");
    $stz=gmstrftime("%Z");
    $visitortimezone=("$tmzone, ($stz)");


    function getBrowser() 
    { 
        $u_agent = $_SERVER['HTTP_USER_AGENT']; 
        $bname = 'Unknown';
        $platform = 'Unknown';
        $version= "";

        //First get the platform?
        if (preg_match('/linux/i', $u_agent)) {
            $platform = 'linux';
        }
        elseif (preg_match('/macintosh|mac os x/i', $u_agent)) {
            $platform = 'mac';
        }
        elseif (preg_match('/windows|win32/i', $u_agent)) {
            $platform = 'windows';
        }

        // Next get the name of the useragent yes seperately and for good reason
        if(preg_match('/MSIE/i',$u_agent) && !preg_match('/Opera/i',$u_agent)) 
        { 
            $bname = 'Internet Explorer'; 
            $ub = "MSIE"; 
        } 
        elseif(preg_match('/Firefox/i',$u_agent)) 
        { 
            $bname = 'Mozilla Firefox'; 
            $ub = "Firefox"; 
        } 
        elseif(preg_match('/Chrome/i',$u_agent)) 
        { 
            $bname = 'Google Chrome'; 
            $ub = "Chrome"; 
        } 
        elseif(preg_match('/Safari/i',$u_agent)) 
        { 
            $bname = 'Apple Safari'; 
            $ub = "Safari"; 
        } 
        elseif(preg_match('/Opera/i',$u_agent)) 
        { 
            $bname = 'Opera'; 
            $ub = "Opera"; 
        } 
        elseif(preg_match('/Netscape/i',$u_agent)) 
        { 
            $bname = 'Netscape'; 
            $ub = "Netscape"; 
        } 


        // finally get the correct version number
        $known = array('Version', $ub, 'other');
        $pattern = '#(?<browser>' . join('|', $known) .
        ')[/ ]+(?<version>[0-9.|a-zA-Z.]*)#';
        if (!preg_match_all($pattern, $u_agent, $matches)) {
            // we have no matching number just continue
        }

        // see how many we have
        $i = count($matches['browser']);
        if ($i != 1) {
            //we will have two since we are not using 'other' argument yet
            //see if version is before or after the name
            if (strripos($u_agent,"Version") < strripos($u_agent,$ub)){
                $version= $matches['version'][0];
            }
            else {
                $version= $matches['version'][1];
            }
        }
        else {
            $version= $matches['version'][0];
        }

        // check if we have a number
        if ($version==null || $version=="") {$version="?";}

        return array(
            'userAgent' => $u_agent,
            'name'      => $bname,
            'version'   => $version,
            'platform'  => $platform,
            'pattern'    => $pattern
        );
    }

    $ua=getBrowser();
    $browser="$ua[name] $ua[version]";
    $os="$ua[platform]";

    $referer = $_SERVER['HTTP_REFERER'];

    $sql="INSERT INTO visitslog (host,pageurl,VisitPage,VisitorIP,VisitDate,VisitorTimeZone,VisitTime,browser,operatingsystem,referer)       VALUES('$host','$page_name','$parse_page_name','$ipAddress','$today','$visitortimezone','$now','$browser','$os','$referer')";
    $result=mysql_query($sql);


?>
Member Avatar
diafol
Where are my eyes?
12,983 posts since Oct 2006
Reputation Points: 1,821 [?]
Q&As Helped to Solve: 1,848 [?]
Skill Endorsements: 92 [?]
Moderator
Featured
Sponsor
 
0
 

I can't see any loops there. Is the data logged all the same? All from the same IP address? Do you have redirects?

Member Avatar
vizz
Posting Pro in Training
427 posts since Dec 2009
Reputation Points: 0 [?]
Q&As Helped to Solve: 0 [?]
Skill Endorsements: 9 [?]
 
0
 

Yes there are no loops, no redirects thats why I'm confused.

simply log.php file is included on index.php

After few seconds new records are inserted, currently all records are from, localhost 127.0.0.1

I found new problem its 11:06pm here and it inserted VisitTime:- 06:36:19
and
VisitorTimeZone:- Europe/Berlin, (India Standard Time) for localhost

Other logs are correct but its multiple

Member Avatar
diafol
Where are my eyes?
12,983 posts since Oct 2006
Reputation Points: 1,821 [?]
Q&As Helped to Solve: 1,848 [?]
Skill Endorsements: 92 [?]
Moderator
Featured
Sponsor
 
0
 

Place a counter in a session:

session_start();
$_SESSION['counter'] = !isset($_SESSION['counter']) ? 1 : $_SESSION['counter']++;

Add a field for now called counter, and when you do your INSERT, add the value of the variable above.

Just need to see if it's the same event inserted many times, or if it's multiple page impressions. I can't see that it's the latter though.

Alternatively, get microtime() and place that into a field.

I can't see the conenction details, so I'm assuming there's a lot more to these pages than you've shown - possibly the issue is there.

Member Avatar
vizz
Posting Pro in Training
427 posts since Dec 2009
Reputation Points: 0 [?]
Q&As Helped to Solve: 0 [?]
Skill Endorsements: 9 [?]
 
0
 

My log.php contains above code only. And index.php contains database connection and include of log.php

Anyway with the help of your code I managed to get one record problem is solved now.

Member Avatar
vizz
Posting Pro in Training
427 posts since Dec 2009
Reputation Points: 0 [?]
Q&As Helped to Solve: 0 [?]
Skill Endorsements: 9 [?]
 
0
 

Now I need to create chart for above log

Database fields are,

  • host
  • pageurl
  • VisitPage
  • VisitorIP
  • VisitDate
  • VisitorTimeZone
  • VisitTime
  • browser
  • operatingsystem
  • referer

I need chart for Toatl Visits, Uniquie Visits, Impressions, Online Users, Pageviews,
%New Visits, % Uniquie Visits, %New Visitor, %Returning Visitor

There is problem with VisitTime and VisitorTimeZone it is not showing accurate values

Please help

Member Avatar
vizz
Posting Pro in Training
427 posts since Dec 2009
Reputation Points: 0 [?]
Q&As Helped to Solve: 0 [?]
Skill Endorsements: 9 [?]
 
0
 

@diafol

sorry, forgot to say thanks!

Member Avatar
diafol
Where are my eyes?
12,983 posts since Oct 2006
Reputation Points: 1,821 [?]
Q&As Helped to Solve: 1,848 [?]
Skill Endorsements: 92 [?]
Moderator
Featured
Sponsor
 
0
 

Ok, mark question solved and start a new thread for this new question.

Member Avatar
vizz
Posting Pro in Training
427 posts since Dec 2009
Reputation Points: 0 [?]
Q&As Helped to Solve: 0 [?]
Skill Endorsements: 9 [?]
 
0
 

ok

Question Answered as of 1 Year Ago by diafol
You
This question has already been solved: Start a new discussion instead
Post:
Start New Discussion
Tags Related to this Article