use Google Analytics to count mobile site traffic
<?phpclass googleanlayticsmobile {private $utma; Utma Cookie Record Unique visitor private $utma _c_time = 63072000; Two years (by default, two years) private $UTMB; UTMB Cookie records the user's session expiration time private $UTMB _c_time = 1800; 30 minutes (two years by default) private $UTMC; UTMC cookie user exits the browser and fails the private $UTMZ; UTMZ Cookie main function record access source private $UTMZ _c_time = 1800; 30 minutes (by default half a year) private $ga _utmhn; Website domain name private $ga _utmac; GA account Private $ga _UTMWV = "4.9.2"; Google tracking code version private $ga _hash; GA domain name hash value private $ga _img = "Http://www.google-analytics.com/utm.gif"; Private $ga _search = Array ("Baidu", "WD"), Array ("Baidu", "word"), array ("Google", "Q"), Array ("Sogou", "Q"), Array ( "Soso", "W"), Array ("Youdao", "Q"), Array ("Bing", "Q"), Array ("Sogou", "Yahoo"), Array ("114118", "kw")); Private $ga _referer;//private $remote _address; Private $time; Private $html; function construct ($ga _utmac, $ga _utmhn, $URI = NULL, $ga _params = Array ()) {$this->ga_utmac = $ga _utmac; $this->GA_UTMHN = $ga _utmhn; $this->ga_hash = $this->hash ($ga _utmhn); $this->time = time (); Gets the request page URI if ($URI ==null) $URI = $_server[' Request_uri '); Get the Referral website URL $this->ga_referer = $_server[' http_referer '); Get the User IP address save only the first three bits $this->remote_address = $_server[' remote_addr '); Get traffic Source $source = $this->gettrafficsource (); if ($source ["Utmgclid"]!= "") $source _str = "utmgclid=". $source ["Utmgclid"]; else $source _str = "utmcsr=". $source ["UTMCSR"]; $source _str. = "|utmccn=". $source ["UTMCCN"]. "| Utmcmd= ". $source [" Utmcmd "]; if ($source ["Utmctr"]!= "") $source _str. = "|utmctr=". $source ["utmctr"]; if ($source ["Utmcct"]!= "") $source _str. = "|utmcct=". $source ["Utmcct"]; Set all extra parameters like screen resolution, color depth if (Is_array ($ga _params)) foreach ($ga _params as $key => ; $value) $ga _set_params. = "&". $key. " = ". Rawurlencode ($value); else $ga _set_params = ""; Check if "Utma" exists if (Isset ($_cookie["Utma")) {$this->utma = $_cookie["Utma"]; $this->UTMB = $_cookie["UTMB"]; $this->UTMZ = $_cookie["UTMZ"]; $UTMB = Split ("\.", $this->UTMB); if (Strpos ($this->utmz, "Utmgclid") >-1) $pos = Strpos ($this->utmz, "Utmgclid"); else $pos = Strpos ($this->utmz, "UTMCSR"); $UTMZ = Split ("\.", substr ($this->utmz,0, $pos)); $UTMZ [4] = substr ($this->utmz, $pos); $utma = Split ("\.", $this->utma); Check if "UTMC" is present and update the number of accesses in "UTMA" if it does not exist. if (!isset ($_cookie["UTMC")) {//increase the number of accesses $utma [5] = $utma [5]+1; Update Access Time $UTMA [3] = $UTMA [4]; $UTMA [4] = $this->time; Save cookies $this->utma = Join (".", $utma); Setcookie ("Utma", $this->utma, $this->time+ $this->utma_c_time, "/", ".". $this->GA_UTMHN); Setcookie ("UTMC", $utma [0], 0, "/", ".". $this->GA_UTMHN); Generate "UTMB" or update the number of access pages in "UTMB". if (Isset ($_cookie["UTMB")) $UTMB [1] = 1; else $UTMB = Array ($utma [0], 1, ten, $this->time); } else $UTMB [1] = $UTMB [1]+1; Add access Pages in "UTMB"//Update traffic source if ($UTMZ[4]!= $source _str && $source ["UTMCSR"]!= "(direct)") $UTMZ = Array ($utmz [0], $this->time, $utma [5], $UTMZ [3]+ 1, $source _str); Save "UTMB" and "UTMZ" $this->UTMB = Join (".", $UTMB); Setcookie ("UTMB", $this->UTMB, $this->time+ $this->utmb_c_time, "/", ".". $this->GA_UTMHN); $this->UTMZ = Join (".", $UTMZ); Setcookie ("UTMZ", $this->utmz, $this->time+ $this->utmz_c_time, "/", ".". $this->GA_UTMHN); } else {$c _id = sprintf ("%f", (rand (1000000000,2147483647) ^ $this->ga_hash) * 2147483647); $c _id = Split ("\.", $c _id); $this->utma = $this->ga_hash. ".". $c _id[0]. ".". $this->time. ".". $this->time. ".". $this->time. " 1 "; $this->UTMB = $this->ga_hash. ". 1.10. ". $this->time; $this->UTMC = $this->ga_hash; $this->UTMZ = $this->ga_hash. ".". $this->time. " 1.1. ". $source _str; Setcookie ("Utma", $this->utma, $this->time+ $this->utma_c_time, "/", ".". $this->GA_UTMHN); Setcookie ("UTMB", $this->utMB, $this->time+ $this->utmb_c_time, "/", ".". $this->GA_UTMHN); Setcookie ("UTMC", $this->utmc, 0, "/", ".". $this->GA_UTMHN); Setcookie ("UTMZ", $this->utmz, $this->time+ $this->utmz_c_time, "/", ".". $this->GA_UTMHN); }//Send page picture request $this->html. = "ga_img. "? utmwv=". $this->GA_UTMWV. "&utmn=". Rand (1000000000,9999999999). "&utmhn=". $this->ga_utmhn. "". $ga _set_params. "&utmhid=". Rand (1000000000,9999999999). "&utmr=". Rawurlencode ($this->ga_referer). "&utmp=". Rawurlencode ($URI).//"&utmip=". Rawurlencode ($this->remote_address). "&utmac=". $this->ga_utmac. " &utmcc=utma%3d ". $this->utma." %3b%2butmz%3d ". Rawurlencode ($this->utmz). " %3b\ "width=\" 1\ "height=\" 1\ "/>\n"; }//hash algorithm function hash ($d) {if (! $d | | $d = = "") return 1; $h = 0; $g = 0; For ($i =strlen ($d)-1; $i >=0; $i-) {$c = (int) (ORD ($d [$i])); $h = (($h << 6) & 0xFFFFFFF) + $c + ($c << 14); $g = ($H & 0xfe00000); if ($g!=0) $h = ($h ^ ($g >> 21)); } return $h; } function Gettrafficsource () {if (Isset ($_get["Utm_source"]) && isset ($_get["Utm_medium"])) {//Link set source $UTMCCN = Isset ($_get["utm_campaign"])? $_get["Utm_campaign"]: "(not set)"; $utmcct = Isset ($_get["utm_content"])? $_get["Utm_content"]: "(not set)"; Return Array ("utmgclid" = "" "," UTMCSR "=>$_get[" Utm_source "]," UTMCCN "and" = $UTMCCN, "utmcmd" =>$_get["utm_ Medium "]," utmctr "=>$_get[" Utm_term "]," utmcct "= = $utmcct); } else if ($this->ga_referer!= "") {//traffic coming from the referral website $search _engine = $this->getsearchengine (); Determine if the search engine if ($search _engine) return $search _engine; else if (!isset ($_cookie["UTMC"])) {//If it is a new user or not a search engine, set referer $ref = $this->getreferer (); if (substr ($ref ["host"],0,4) = = "www.") $ref ["host"] = substr ($ref ["host"],4); Remove www from URL return array ("utmgclid" = "", "utmcsr" = "=" = $ref ["Host"], "UTMCCN" and "(referral)","Utmcmd" = "Referral", "utmctr" and "" "," Utmcct "and" = "$ref [" uri "]); }} return Array ("Utmgclid" + "", "UTMCSR" = "(direct)", "UTMCCN" and "(direct)", "Utmcmd" and "(none)", "utmctr" = "", "Utmcct" and "" "); } function Getsearchengine () {$ref = $this->getreferer (); for ($ii =0; $ii <count ($this->ga_search), $ii + +) {if (Strpos (Strtolower ($ref ["host"]), Strtolower ($this->ga_ search[$ii][0]) (>-1) {$test 1 = strpos ($ref ["Referer"], "?". $this->ga_search[$ii][1]. " ="); $test 2 = Strpos ($ref ["Referer"], "&". $this->ga_search[$ii][1]. " ="); $i = ($test 1 >-1)? $test 1: $test 2; if ($i >-1) {$k = substr ($ref ["Referer"], $i +strlen ($this->ga_search[$ii][1]) +2, strlen ($ref ["Referer"])); $i = Strpos ($k, "&"); if ($i >-1) $k = substr ($k, 0, $i); if (Isset ($_get["Gclid"])) return Array ("Utmgclid" =>$_get["Gclid"], "UTMCSR" = "", "UTMCCN" = "(not set)", "UT Mcmd "=" (not set), "Utmctr" and "Utmcct" ("=" and "" "); ElsE return Array ("Utmgclid" + "", "UTMCSR" and "=" = $this->ga_search[$ii][0], "UTMCCN" = "(organic)", "Utmcmd" "Organic", "utmctr" and "$k", "Utmcct" and "" "; }}} return false; } function Getreferer () {$referer _tmp = $this->ga_referer; $pos = Strpos ($referer _tmp, "://"); if ($pos >0) $referer _tmp = $referer _tmp = substr ($referer _tmp, $pos +3); $pos = Strpos ($referer _tmp, "/"); if ($pos >0) return Array ("host" =>substr ($referer _tmp, 0, $pos), "uri" =>substr ($referer _tmp, $pos), "referer" = > $this->ga_referer); else return Array ("host" = = $referer _tmp, "uri" = "", "referer" and "=" = $this->ga_referer); } function Settransaction ($order _id, $amount, $shipping, $tax, $city, $region, $country) {//Transaction $this->html. = "& Lt;img src=\ "". $this->ga_img. "? utmwv= ". $this->GA_UTMWV. "&utmn=". Rand (1000000000,9999999999). " &utmhn= ". $this->ga_utmhn. "&utmt=tran&utmtid=". $order _id. " &utmtto= ". $amount." &utmttx= ". $tax. "&utmTsp= ". $shipping." &utmtci= ". Rawurlencode ($city)." &utmtrg= ". Rawurlencode ($region). "&utmtco=". Rawurlencode ($country). " &utmac= ". $this->ga_utmac." &utmcc=utma%3d ". $this->utma. " %3b%2butmz%3d ". Rawurlencode ($this->UTMZ). %3b\ "width=\" 1\ "height=\" 1\ "/>\n"; } function Settransactionitem ($order _id, $item _id, $category, $name, $price, $quantity) {//Trading commodity records $this->html. = " ga_img. "? utmwv= ". $this->GA_UTMWV. "&utmn=". Rand (1000000000,9999999999). " &utmhn= ". $this->ga_utmhn. "&utmt=item&utmtid=". $order _id. " &utmipc= ". $item _id." &utmipn= ". Rawurlencode ($name). "&utmiva=". Rawurlencode ($category). " &utmipr= ". $price." &utmiqt= ". $quantity." &utmac= ". $this->ga_utmac. " &utmcc=utma%3d ". $this->utma." %3b%2butmz%3d ". Rawurlencode ($this->UTMZ). %3b\ "width=\" 1\ "height=\" 1\ "/>\n"; } function Gettrackingcode () {//Execute tracer return $this->html;}}
The above is the use of Google Analytics to count the mobile site traffic content, more relevant content please pay attention to topic.alibabacloud.com (www.php.cn)!