(.*)(.*)', $line, $out)) { $title = $out[2]; break; } //if } //while } //else // trim title to max character length without breaking words if (isset($title)) { $aspace=" "; if(strlen($title) > $title_max ) { $title = substr(trim($title),0,$title_max); $title = substr($title,0,strlen($title)-1-strpos(strrev($title),$aspace)); $title = $title . '...'; } // clean $title to exclude single quotes $title=htmlspecialchars($title, ENT_QUOTES); $title=eregi_replace("\'", "", $title); return $title; } else { return "No Title"; } } function process_refer($refer, $refer_full) { //Compare link to database global $debug; global $db_host; global $db_username; global $db_password; global $db_name; global $table_name; global $exclude_sites; $refer_lookup = $refer; $timeStamp = time(); //strip www from refer $refer = eregi_replace('www\.','',$refer); if (in_array($refer, $exclude_sites)) { return; } if (eregi('google', $refer)) { //fix to aggregate all googles (countries) to one $refer="google.com"; } $query = "SELECT refer_title, refer_name, count FROM $table_name WHERE refer_name='$refer' "; $result = do_query($query); // if in database if ($row = mysql_fetch_array($result)) { $title = $row['refer_title']; $query = "INSERT INTO $table_name SET count=1, refer_name='$refer', refer_full='$refer_full', refer_title='$title', time=$timeStamp "; $result = do_query($query); } else { // insert link, title $title = lookup_title($refer_lookup); $query = "INSERT INTO $table_name SET count=1, refer_name='$refer', refer_full='$refer_full', refer_title='$title', time=$timeStamp "; $result = do_query($query); } } function cleanUp($expire_time) { // delete old entries global $table_name; $timeCutoff = time() - (3600*$expire_time); $query = "DELETE FROM $table_name WHERE time<$timeCutoff "; $result = do_query($query); } function print_refers($output_type, $n, $min) { // none - track only // short - list of $n, and count >= $min // all - all global $table_name; global $expire_time; // in hours global $include_local; global $include_unknown; global $local_site; global $include_total; global $backiron_loc; echo "Sites that sent visitors over the past $expire_time hours. "; if ($include_total) { $query = "SELECT count(*) FROM $table_name"; $result = do_query($query); $row = mysql_fetch_array($result); echo "Total: " . $row['count(*)']. " pageviews. "; } if ($output_type=='short') { echo "Top $n referrals, with minimum of [$min]."; if (!$include_local) $n=$n+1; if (!$include_unknown) $n=$n+1; $query = "SELECT refer_name, refer_full, refer_title, count(*) FROM $table_name GROUP BY refer_name ORDER BY 4 DESC LIMIT $n"; } elseif ($output_type=='all') { $query = "SELECT refer_name, refer_full, refer_title, count(*) FROM $table_name GROUP BY refer_name ORDER BY 4 DESC"; } else { return; } $result = do_query($query); echo "

"; while($row = mysql_fetch_array($result)) { if (!((!$include_local) AND eregi($local_site, $row['refer_full'] ))) { if (($output_type=='short') AND ($row['count(*)']<$min)) { break; } if ($row['refer_title']=='No Title') { $row['refer_title']=''.$row['refer_name']; if ($row['refer_title']=='') { $row['refer_title']='Unknown'; } } if ($row['refer_full']) { echo ' [' . $row['count(*)'] . '] ' . $row['refer_title'] . '
'; } else { if ( ($include_unknown) OR ($row['refer_title']!='Unknown') ) { echo ' [' . $row['count(*)'] . '] ' . $row['refer_title'] . '
'; } } } } echo "[..] more..."; echo "

Powered by backIron"; } // ----------------------------- MAIN ----------------------------------// $refer_full = $_SERVER['HTTP_REFERER']; $page = $_SERVER['PHP_SELF']; if ($_SERVER['QUERY_STRING']) { $query = $_SERVER['QUERY_STRING']; } // Strip full url to get base only $url_comp = parse_url($refer_full); $refer = '' . $url_comp[host] ; openDatabase ($db_name, $db_host, $db_username, $db_password); // Insert or increment process_refer($refer, $refer_full); // Remove old refers cleanUp($expire_time); if (!isset($output_type)) { $output_type=$output_type_default; } if (!isset($output_number)) { $output_number=25; } if (!isset($output_min)) { $output_min=2; } print_refers($output_type, $output_number, $output_min); ?>