'q', 'msn' => 'q', 'yahoo' => 'p', 'dk.search.yahoo' => 'p', 'm.yahoo' => 'p', 'altavista' => 'q', 'jubii' => 'q', 'soeg.jubii' => 'q', 'myspace' => 'qry', 'eniro' => 'search_word', 'live' => 'q', 'ask' => 'q', 'dk.ask' => 'q', 'aol' => 'query', 'search.aol' => 'query', 'bing' => 'q', 'abcsok' => 'q', 'sweetim' => 'q', 'fastbrowsersearch' => 'q', 'conduit' => 'q', 'search.conduit' => 'q', 'isearch.avg' => 'q', 'search.babylon' => 'q' ); //TJEK OM REFERENCEN ER EN SØGEMASKINE MED ET SØGEORD $keywordnotprovided = 0; $keywordposition = 0; foreach($searchengines as $searchenginename => $val) { // hvis det er google, så er der nogle flere ting vi gerne vil vide if($searchenginename == "google") { // regex til google, den har sin egen, da den ikke er helt magen til den opbygningen som de andre har. Den har tidligere indholdt regex til også at finde SERP positionen på keyword, det er dog flyttet ud i sin egen regex den 09-10-2012 af ssj $regex = "~^https?://(www\.)?(google|googleadservices)\.[a-z.]{2,6}.*?(?:(?:(?:&|\?)q=([^&]*))|$)~"; // da det er et besøg fra google, kan vi også lige se om der er brugt adwords if(preg_match("/https?:\/\/(.*?)\/(?:.*?)(?:[&\?]gclid=([^&]*)|$)/i", $httpreferer, $adwordsmatch)) { if(!empty($adwordsmatch['2'])) { $adwords = 1; } } // vi forsøger at finde ud af hvilken SERP position søgeordet har if(preg_match("/https?:\/\/(.*?)\/(?:.*?)(?:[&\?]cd=([^&]*)|$)/i", $referer, $serpmatch)) { // hvis vi kan se en position på google(og det er et tal) jamen så gemmer vi det da lige. if(!empty($serpmatch['2']) && is_numeric($serpmatch['2'])) { $keywordposition = $serpmatch['2']; } } } else { $regex = "~^https?://(www\.)?($searchenginename|$searchenginename)\.[a-z.]{2,6}.*?(?:(?:[&\?]$val=([^&]*))|$)~"; } if(preg_match($regex, $referer, $matches)) { if(!empty($matches['3'])) { $keywordused = urldecode($matches['3']); } else { $keywordused = ''; $keywordnotprovided = 1; } if($searchenginename == 'dk.ask') { $searchenginename = 'ask'; } elseif($searchenginename == 'search.conduit') { $searchenginename = 'conduit'; } elseif($searchenginename == 'dk.search.yahoo') { $searchenginename = 'yahoo'; } elseif($searchenginename == 'dk.search.yahoo') { $searchenginename = 'yahoo'; } elseif($searchenginename == 'm.yahoo') { $searchenginename = 'yahoo'; } elseif($searchenginename == 'soeg.jubii') { $searchenginename = 'jubii'; } elseif($searchenginename == 'search.babylon') { $searchenginename = 'babylon'; } elseif($searchenginename == 'isearch.avg') { $searchenginename = 'avg'; } elseif($searchenginename == 'search.aol') { $searchenginename = 'aol'; } $searchenginenameused = $searchenginename; $i = 1; break; } } $imgurl = ''; //Denne "If" blev tilføjet d. 09/10-10 //TJEKKER OM REFERENCEN ER FRA GOOGLES BILLEDESØGNING "GOOGLE IMAGES". if(strpos($referer, '/imgres?') && strpos($referer, '.google.')) { //DEL REFERENCEN OP FOR AT FÅ [QUERY]. $refererbrok = parse_url($referer); //DEL [QUERY] OP DA DENNE INDEHOLDER EN URL parse_str($refererbrok['query'], $refererbrok); //HENT BILLEDET SOM BLEV FUNDET $imgurl = urldecode($refererbrok['imgurl']); //SÆT SØGEORDET SOM BLEV BRUGT $keywordused = $refererbrok['q']; // Hvis der ikke er noget keyword, er det en billede søgning fra https (keyword not provided) if(empty($keywordused)) { $keywordnotprovided = 1; } //SÆT SØGEMASKINEN SOM BLEV BRUGT $searchenginenameused = 'google images'; } if(!empty($keywordused) || $keywordnotprovided == 1) { $query = mysql_query("SELECT id FROM refsearch WHERE url = '$httpreferer' AND refurl = '$referer' AND ip = '$ip' AND counterid = '$id' AND time > $newvisit AND keywordnotprovided = '$$keywordnotprovided' LIMIT 1") or die(mysql_error()); if(mysql_num_rows($query) == 0) { $keywordused = stripcslashes(encodeToIso($keywordused)); $keywordused = str_replace('<', '', $keywordused); $referer = encodeToIso($referer); $referer = $searchenginenameused == 'google' ? str_replace('/url?', '/search?', $referer) : $referer; mysql_query("INSERT INTO refsearch (counterid, time, ip, refurl, url, searchword, searchengine, imgurl, keywordnotprovided, adwords, position) VALUES ('$_GET[id]', '$time', '$ip', '$referer', '$httpreferer', '$keywordused', '$searchenginenameused', '$imgurl', '$keywordnotprovided', '$adwords', '$keywordposition')") or die(mysql_error()); //Til affiliate epi $refsearch_id = mysql_insert_id(); $reflinks_id = 0; } } else { //Tilføjet 19/04-2010 for at kunne blokere referrer spam, i toppen er de udelukkede domæner defineret $ref_domain_data = explode('.', $refdomain[1]); $ref_domain_data_count = count($ref_domain_data); $toplevel_ref_domain = $ref_domain_data[$ref_domain_data_count-2].'.'.$ref_domain_data[$ref_domain_data_count-1]; if(!in_array($toplevel_ref_domain, $blocked_domains)) { $query = mysql_query("SELECT id FROM reflinks WHERE url = '$httpreferer' AND refurl = '$referer' AND ip = '$ip' AND counterid = '$id' AND time > $newvisit LIMIT 1") or die(mysql_error()); if(mysql_num_rows($query) == 0) { $referer = encodeToIso($referer); $url = encodeToIso($httpreferer); mysql_query("INSERT INTO reflinks (counterid, time, ip, refdomain, refurl, url) VALUES ('$_GET[id]', '$time', '$ip', '$refdomain[1]', '$referer', '$httpreferer')") or die(mysql_error()); //Til affiliate epi $refsearch_id = 0; $reflinks_id = mysql_insert_id(); } } } //Affiliate EPI if($counterrow['affiliateTracking'] == 1) { $uuid = md5($ip.$id.$_SERVER['HTTP_USER_AGENT']); mysql_query("UPDATE affiliate_visits SET visits_timestamp = '".$time."', refsearch_id = '".$refsearch_id."', reflinks_id = '".$reflinks_id."' WHERE visits_epi = '".$uuid."' AND used = 0 LIMIT 1") or die(mysql_error()); } } } if(preg_match("/https?:\/\/(.*?)\//i", $httpreferer, $domain)) { //TJEKKER OM BESØGSTÆLLEREN BLIVER LOADED PÅ DET DOMÆNE DEN TILHØRER if($counterrow['site'] == $domain[1] || 'www.'.$counterrow['site'] == $domain[1] || $counterrow['site'] == 'www.'.$domain[1]) { $referer = encodeToIso($referer); $httpreferer = encodeToIso($httpreferer); //INDSÆT SIDEVISNING mysql_query("INSERT INTO pageviews (counterid, time, ip) VALUES ('$id', '$time', '$ip')") or die(mysql_error()); //TJEK OM MAN ALLEREDE ER ONLINE $query = mysql_query("SELECT id FROM online WHERE ip = '$ip' AND counterid = $id AND time > $newvisit LIMIT 1") or die(mysql_error()); //HVIS MAN IKKE ER ONLINE if(mysql_num_rows($query) == 0) { //STYRESYSTEM-, BROWSER- OG VERSIONSDATA INDSAMLES HER $browser = get_browser(null, true); //INDSÆT STYRESYSTEM if(isset($browser['platform'])) { mysql_query("INSERT INTO operatingsystem (time, counterid, os) VALUES ('$time', '$id', '$browser[platform]')") or die(mysql_error()); } //INDSÆT BROWSER if(isset($browser['browser']) && isset($browser['majorver'])) { mysql_query("INSERT INTO browser (time, counterid, browser, version) VALUES ('$time', '$id', '$browser[browser]', '$browser[majorver]')") or die(mysql_error()); } // FIND UD AF HVILKET LAND FOLK ER FRA $country = get_geo_data(); // INDSÆT LAND if(isset($country)) { mysql_query("INSERT INTO countries (time, counterid, country) VALUES ('$time', '$id', '$country')") or die(mysql_error()); } //SLET GAMLE IPADRESSER /* DENNE LINIE ER FJERNET DEN 6-4-2009, da det er forkert at slette alle online på samme ip. Det ville kunne give fejl statistik. Linien er helt fjernet, da der alligvel slettes fra online hver time, ved hjælp af cronjob UPDATE Linien er indsat igen den 30. juli 2009, fordi hvis vi ikke sletter, så vil man pludslig kunne have 2 online fra samme ip. De vil ikke blive slettet, så længe der er aktivitet for ipen, og den vil derfor tælle dobbelt hele tiden //Søren */ mysql_query("DELETE FROM online WHERE ip = '$ip' AND counterid = '$id'") or die(mysql_error()); //INDSÆT ONLINE mysql_query("INSERT INTO online (counterid, time, ip, entrytime, entryurl, refdomain, refurl, lastpage, currentpage, searchengine, searchword, browser, browserversion, operatingsystem) VALUES ('$id', '$time', '$ip', '$time', '$httpreferer', '$refdomain[1]', '$referer', '$referer', '$httpreferer', '$searchenginenameused', '$keywordused', '$browser[browser]', '$browser[majorver]', '$browser[platform]')") or die(mysql_error()); //INDSÆT BESØGENDE mysql_query("INSERT INTO uniquehits (counterid, time, ip) VALUES ('$id', '$time', '$ip')") or die(mysql_error()); } else { mysql_query("UPDATE online SET time = '$time', lastpage = '$referer', currentpage = '$httpreferer' WHERE ip = '$ip' AND counterid = '$id'") or die(mysql_error()); } } } } } } header('Location: images/counters/'.$img.'.gif'); } } ?>