PDA

View Full Version : Site info script question


Brad_Armitage
10-12-2005, 02:48 PM
I finally have a fully working script to track certain info on my site: a person's ip, their browser, and how they got to my site. I still have 2 questions about my script however:

1 - It seems to record almost every referer, including every search engine, except when they are coming from google, why is that?

2 - Someone told me before that this information I am trying to collect on the visitor's to my site can easily be faked when I use php (they also said there's a better way in javascript). How can a visitor fake their ip, browser and referer? Lately, I have been getting very similar information from visitors to my site ie. similar ip's, all the same browser (other browsers: see my script below), and no referer!!

Here is a copy of my script, which stores the info in an xml file:


<?php
session_start();
session_register('counter');
$CountFile = "txtfolder/counter.txt";
$Count = file($CountFile);
$Count = implode("", $Count);
if(!$_SESSION['counter']){
$_SESSION['counter'] = true;
$OpenFile = fopen($CountFile, "r+");
$Count++;
$user_ip = GetHostByName($_SERVER['REMOTE_ADDR']);
$browser = get_browser($_SERVER['HTTP_USER_AGENT']);
$banned = array('111.222.333.444', '66.77.88.99');
if (!in_array($user_ip, $banned)) {
if($OpenFile){
fwrite($OpenFile, $Count);
fclose($OpenFile);
}
}
//
if (isset ($_SERVER['HTTP_X_FORWARDED_FOR'])) {
$user_ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
} else {
$user_ip = $_SERVER['REMOTE_ADDR'];
}
//
if ( strpos($_SERVER['HTTP_USER_AGENT'], 'Gecko') )
{
if ( strpos($_SERVER['HTTP_USER_AGENT'], 'Netscape') )
{
$browser = 'Netscape';
}
else if ( strpos($_SERVER['HTTP_USER_AGENT'], 'Firefox') )
{
$browser = 'Firefox';
}
else if ( strpos($_SERVER['HTTP_USER_AGENT'], 'Safari') )
{
$browser = 'Safari';
}
else
{
$browser = 'Mozilla';
}
}
else if ( strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') )
{
if ( strpos($_SERVER['HTTP_USER_AGENT'], 'Opera') )
{
$browser = 'Opera';
}
else
{
$browser = 'Internet Explorer';
}
}
else
{
$browser = 'Other Browsers';
}
//
$domain = 'bradleya.ca';
function refer(&$ip, $domain, $referer)
{
$referer = isset($_SERVER['HTTP_REFERER']) && strpos($_SERVER['HTTP_REFERER'],$_SERVER['HTTP_HOST']) === FALSE ? $_SERVER['HTTP_REFERER'] : '';
$referer = parse_url($referer);
$referer = $referer['host'];
$ip->set_attribute('referer',$referer);
}
//
$string = file_get_contents('txtfolder/statistics.xml');
$pos = strpos($string , $user_ip);
$ip_file = "txtfolder/statistics.xml";
$document = &domxml_open_file($ip_file);
$tags = &$document->get_elements_by_tagname('visitors');
if (!in_array($user_ip, $banned)) {
if(empty($tags))
{
}
else
{
$ip_addresses = &$tags[0];
$ip = &$document->create_element('ip');
$ip->set_attribute('address', $user_ip);
$ip->set_attribute('browser', $browser);
refer($ip, $domain, $_SERVER['HTTP_REFERER']);
$ip_addresses->append_child($ip);
$document->dump_file($ip_file, false, true);
}
}
}
?>


:cool: