Error! The user-agents table does not exist.\n"; echo "Please run the script before trying to produce a report."; exit(); } $query = "SELECT * FROM `uaSniffer` ORDER BY `ua_ID` ASC "; $result = mysql_query($query) or die("Query failed"); $num=mysql_numrows($result); $i=0; $uas=0; $ual=0; $uaa=0; $uass=""; $uasstr=""; $ualstr=""; $alphanumeric = " qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM0123456789"; $nonalphanumeric = ""; echo "
\n";
echo "/***********************************************************\n";
echo " * User Agent Sniffer Report - ".date("d/m/Y")." *\n";
echo " * ======================================================= *\n";
echo " * *\n";
echo " * Description: *\n";
echo " * This report has been generated by User Agent Sniffer, *\n";
echo " * a PHP script developed to capture unique user agent *\n";
echo " * strings from web browsers, bots and other software that *\n";
echo " * cares to identify itself. More information about this *\n";
echo " * script can be found at: *\n";
echo " * http://crunchbang.org/projects/user-agent-sniffer/ *\n";
echo " ***********************************************************/\n\n";
while ($i < $num) {
$ua=mysql_result($result,$i,"ua_string");
$uasl=strlen($ua);
if($i == 0){
$uas = $uasl;
}
if($uasl < $uas){
$uas = $uasl;
$uasstr = $ua;
}
if($uasl > $ual){
$ual = $uasl;
$ualstr = $ua;
}
$uaa=$uaa+$uasl;
$sp = 0;
while ($sp < $uasl){
$char = substr($ua,$sp,1);
if (!strstr($alphanumeric, $char) and !strstr($nonalphanumeric, $char)) {
$nonalphanumeric=$nonalphanumeric.$char;
}
$sp++;
}
$i++;
$uass=$uass." ".$i.". ".$ua."\n";
}
echo " Total Unique User Agents: ".$i."\n";
echo " Length of Shortest User Agent: ".$uas."\n";
echo " Shortest User Agent: ".$uasstr."\n";
echo " Length of Longest User Agent: ".$ual."\n";
echo " Longest User Agent: ".$ualstr."\n";
echo " Average Length of User Agents: ".$uaa/$i."\n";
echo " Non-Alphanumeric Characters Found: ".$nonalphanumeric."\n";
echo " List of captured user agents:\n\n";
echo $uass;
echo "";
$alphanumeric="";
$nonalphanumeric="";
$uass="";
mysql_close($link);
exit();
}
/**
* If not running in report mode, attempt to sniff user agent
*/
if(!isset($_COOKIE["uaSniffer"])){
$ua = addslashes($_SERVER['HTTP_USER_AGENT']);
$link = mysql_connect(UAS_CONF_DB_ADDRESS, UAS_CONF_DB_USERNAME, UAS_CONF_DB_PASSWORD)
or die("Error. Failed to connect to database.");
mysql_select_db(UAS_CONF_DB_NAME)
or die("Error. Could not select database.");
if (!table_exists("uaSniffer", UAS_CONF_DB_NAME)) {
mysql_query('CREATE TABLE `uaSniffer` ( `ua_ID` INT NOT NULL AUTO_INCREMENT , `ua_string` VARCHAR( 255 ), UNIQUE ( `ua_ID` ) )')
or die("Create table Error: ".mysql_error());
}
$query = "SELECT * FROM `uaSniffer` WHERE `ua_string` = '".$ua."'";
$result = mysql_query($query) or die("Query failed");
$num=mysql_numrows($result);
mysql_free_result($result);
if($num == 0){
$query = "INSERT INTO `uaSniffer`(ua_string) values('".$ua."')";
mysql_query($query, $link)
or die("INSERT ERROR: ".mysql_error() );
}
mysql_close($link);
setcookie("uaSniffer", "sniffed",time()+60*60*24*365,"/","");
}
/**
* Functions
*/
function table_exists($table,$db) {
$tables = mysql_list_tables($db);
while (list($temp) = mysql_fetch_array($tables)) {
if($temp == $table) {
return TRUE;
}
}
return FALSE;
}
?>