熱文推薦
- 深圳微信營銷策劃
- 深圳福田網(wǎng)站建設(shè)好處,網(wǎng)站運(yùn)營如…
- 2013年“五·一”放假通知
- 企業(yè)網(wǎng)站建設(shè)方案怎樣做 包括什么…
- 全面解讀BaiduSpider與站點(diǎn)死鏈
- 深圳網(wǎng)站建設(shè)分享-提升網(wǎng)站收錄的…
- 網(wǎng)站建設(shè)在“互聯(lián)網(wǎng)+”時(shí)代的發(fā)展…
- 網(wǎng)站改版升級(jí)后有哪些優(yōu)缺點(diǎn)?深圳…
- 怎么查看蜘蛛是否來過與如何提高訪…
- 如何做好PC端推廣及移動(dòng)端網(wǎng)站推廣…
如何創(chuàng)建自己的程序(Javascript,ajax,PHP)
如何打造自己的節(jié)目(JavaScript,ajax,PHP)深圳網(wǎng)站打造網(wǎng)站時(shí),主要目標(biāo)之一就是吸引游客。流量是為了錢,為了炫耀你的工作,或者只是為了表達(dá)你的想法。有很多方法可以為您的網(wǎng)站創(chuàng)建流量。搜索引擎、社交書簽、口碑只是幾個(gè)例子。但是你怎么知道交通是不是真的 你怎么知道你的客人還會(huì)回來
這些問題提出了網(wǎng)絡(luò)統(tǒng)計(jì)的概念。通常,網(wǎng)站管理員使用一些程序,例如谷歌Analytics或軟件來完成他們的工作。這些程序可以獲得網(wǎng)站訪問者的各種信息。他們發(fā)現(xiàn)了頁面瀏覽量、訪問量、唯一訪問者、瀏覽器IP地址等,但這是如何工作的呢 有關(guān)如何使用PHP、JavaScript、ajax和sqlite創(chuàng)建自己的網(wǎng)站統(tǒng)計(jì)程序,請按照本教程進(jìn)行操作。
首先,讓我們從一些簡單的HTML標(biāo)記開始,它們將充當(dāng)我們跟蹤的頁面:
lt;!DOCTYPEhtmlPUBLICquot;-//W3C//DTDXHTML 1.0transitional//分號(hào);引用;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional。DTD引用;燃?xì)廨啓C(jī);書信電報(bào);html xmlns=quot;http://www.w3.org/1999/xhtmlquot; dir=報(bào)價(jià);ltrquot;lang=quot;在美國;燃?xì)廨啓C(jī);書信電報(bào);頭部gt;lt;metahttp-當(dāng)量=quot;Content-類型quot;Content=報(bào)價(jià);文本/html;charset=UTF-8quot/燃?xì)廨啓C(jī);書信電報(bào);一)所有權(quán);(1)Web Statistic)slt公司/標(biāo)題;lt/頭部gt;書信電報(bào);車身gt;
lt;H2id=報(bào)價(jià);完成;燃?xì)廨啓C(jī);lt;/()H2)燃?xì)廨啓C(jī);
lt/車身gt;lt/htmlgt公司;
H2#通過網(wǎng)站統(tǒng)計(jì)信息成功跟蹤頁面視圖后,將動(dòng)態(tài)填充完整元素JavaScript。要開始跟蹤,我們可以使用jQuery和ajax請求:
書信電報(bào);腳本類型=quot;文本/JavaScriptquot;src=quot;http://ajax.googleapis.com/ajax/libs/jQuery/1.3.2/jQuery.min.jsquot;燃?xì)廨啓C(jī);lt/腳本gt;lt;script type=#39;text/javascript#39; gt;$()函數(shù)(){// Set the data text var dataText = #39;頁碼=lt;PHP echo $_SERVER; gt;amp;referrer=lt;PHP echo $_SERVER; gt;#39;;
//創(chuàng)建ajax請求$ajax({type:quot;pOSTquot;,//使用pOST方法url:quot/過程。PHPquot;,//文件到calldata:dataText,//我們要傳遞的數(shù)據(jù)success:function(){//success$(#39;#完成#39;)。html(#39;您的頁面視圖已Add添加到統(tǒng)計(jì)信息中39; ); } });}); lt/腳本gt;
逐步考慮上述代碼:
當(dāng)DOM準(zhǔn)備就緒時(shí),我們首先放入數(shù)據(jù)和文本。本文采用查詢字符串格式,將發(fā)送的數(shù)據(jù)進(jìn)行處理PHP,將跟蹤此頁面視圖。
然后我們創(chuàng)建一個(gè)ajax請求,該請求使用post方法發(fā)送表單數(shù)據(jù)。
然后我們的表數(shù)據(jù)(數(shù)據(jù)、文本)被發(fā)送到進(jìn)程PHP在服務(wù)器的根目錄下。
一旦請求完成,H2#complete元素充滿成功通知
我們的下一步是編寫進(jìn)程PHP. 它的主要目標(biāo)是獲取web統(tǒng)計(jì)信息并將其存儲(chǔ)在數(shù)據(jù)庫中。由于我們的數(shù)據(jù)庫尚未建立,我們必須創(chuàng)建一個(gè)簡單的文件install,它將為我們完成以下操作:
lt;PHP#打開數(shù)據(jù)庫$handle=sqlite#打開($SERVER。#39;統(tǒng)計(jì)數(shù)據(jù)庫#39;,0666,$sqlite錯(cuò)誤)或die($sqlite錯(cuò)誤);
#設(shè)置command以創(chuàng)建表$sqlCreateTable=quot;創(chuàng)建表stats(page textunique,ip text,viewsUNSIGNED int DEFAULT 0,referrertext DEFAULT#39;#39;) 引用;;
#execute itsqliteexec($handle,$sqlCreateTable);# Print that we are done echo #39;Finished!# 39;; 燃?xì)廨啓C(jī);
大部分代碼都很簡單。它在服務(wù)器的根目錄中打開一個(gè)數(shù)據(jù)庫并為其創(chuàng)建一個(gè)數(shù)據(jù)庫。sqlcreatetable美元中的字符串是一個(gè)sqlite命令,允許我們對表進(jìn)行計(jì)數(shù)。該表包含四列:第頁,IP地址、評論和建議:
頁面是一個(gè)字符串,其中包含被視為相對鏈接的頁面(即索引PHP)。
IP地址也是包含訪問此頁的IP地址列表的字符串。它位于numvisits1格式IP地址1)numvisits2(Ip地址2)numvisits3(IP address3)等中。例如,如果我們訪問74.35.286.15和586.31.23.78(假想的IP地址)中的10個(gè)人,字符串將為“and;10(74.25.286.15)5(86.31.23.78)rdquo
視圖是一個(gè)整數(shù),包含頁面的查看次數(shù)。
引用與IP地址格式相同的字符串。它包含所有關(guān)于此頁上有多少下線的引用。
現(xiàn)在開始處理PHP:
#連接到數(shù)據(jù)庫$handle=sqliteuuOpen($SERVER。#39/統(tǒng)計(jì)數(shù)據(jù)庫#39;,0666,$sqlite錯(cuò)誤)或die($sqlite錯(cuò)誤);
#使用同源策略防止交叉-site scripting(XSS)攻擊#請記住將http://您的DOMain.com/替換為實(shí)際的DOMainif(strpos($SERVER,#39;http://yourdomain.com/#39; ) !== 0){die(引用;不要使用call這個(gè)腳本manually或來自外部源代碼。quot;);}
#獲取必要的信息,stripHTML標(biāo)記,以及escape備份探測的string$頁=sqlite\escape\string(strip\referrer)=sqliteescape)string(stripuTags($pOST));$ip=sqliteu67)string(stripu標(biāo)簽($SERVER));
#query數(shù)據(jù)庫以便我們可以Update舊信息$sqlGet=#39;從統(tǒng)計(jì)信息中選擇*頁=#39;#39;.$ 第39頁39;# 39;;$result=sqlite+query($handle,$sqlGet);
**段代碼連接到我們的統(tǒng)計(jì)數(shù)據(jù)庫并獲取當(dāng)前訪問所需的信息。它還查詢數(shù)據(jù)庫并獲取任何以前存儲(chǔ)的信息。我們使用此信息創(chuàng)建更新表。
下一個(gè)任務(wù)是查找舊信息:#設(shè)置一些變量來保存舊信息$views =0$ips=#39;#39;;$referrers = #39;# 39;; # 檢查是否有舊信息exists如果($resultamp;amp; ($ info=sqlitefetch)array($result)){#獲取此信息$views =$info;$ips=$信息。#39;#39;; 如果($info)$referrers = $info.#39;#39;;
#設(shè)置一個(gè)標(biāo)志,表明找到了舊信息$flag=true;}
上面的代碼查找表中以前的所有信息。這是至關(guān)重要的,我們需要更新視圖(添加一個(gè))、IP地址和引用的數(shù)量為allreferrers和IP addresses$ref818;num=array(;$ipnum=array();
#查找每個(gè)referrer$VALUES=拆分(#39;#39;, $referrers );
#設(shè)置正則表達(dá)式string以解析referrer$regex=#39;%(d+((*))%#39;;
#循環(huán)遍歷每個(gè)referrerforeach($VALUESas$value){#查找ref勘誤表的number和referrerpregmatch($regex,$value,$matches);如果兩者存在,If($matchesamp;amp; $matches)#在array(referrer鏈接-gt;num誤碼率ref勘誤表)$ref2003;num=intval($matches);}#如果此visitif($referrer)#Add上有一個(gè)referrer,則將其添加到array$refnum)++;#獲取ips$VALUES=拆分(#39;#39;, $ips );
#重復(fù)與上述相同的過程($VALUESas$value){#查找pregmatch($regex,$value,$matches);#如果($matchesamp;amp; $matches#Add它到array$ipnum=intval($matches);}
#Update當(dāng)前Ip為$Ip的arraynum+;
上面的兩個(gè)循環(huán)非常相似。它們從數(shù)據(jù)庫中獲取信息并用正則表達(dá)式進(jìn)行解析。一旦這些信息被解析,它就被存儲(chǔ)在一個(gè)數(shù)組中。然后用當(dāng)前訪問的信息更新每個(gè)數(shù)組。然后,可以使用此信息創(chuàng)建**后一個(gè)字符串:#Reset the $ips string$ips = #39#39;;
#循環(huán)allinformationforeach($ip_)為$key=gt;$val){#將其附加到string(用空格分隔)$ips。=$val.#39;(#39;.$ 鑰匙。#39;)#39;;}
#修剪string$ips=修剪($ips);
#重置$referrersstring$referrers = #39;#39;;
#循環(huán)使用allinformationforeach($refunum)作為$key=gt;$val ) { # Append it $referrers .= $val.#39;(# 39;.$ 鑰匙。#39;)#39;;}
#修剪string$referrers=修剪($referrers);
現(xiàn)在創(chuàng)建**后一個(gè)字符串ips,建議的形式是:quotnumvisits1(Ip/referrer1)numvisits2(Ip/referrer2)等。例如,以下是參考字符串:
5(https://www.noupe.com )10(http://css-tricks.com)
#Updateviews$views++;#的num誤碼率如果我們did從數(shù)據(jù)庫獲取信息#(數(shù)據(jù)庫已經(jīng)包含一些關(guān)于這個(gè)頁面的信息)如果($flag)#Updateit $sqlCmd = #39;Update統(tǒng)計(jì)集ip=#39;#39;.$ips.#39;# 39;, views=#39;# 39;.$views.#39;# 39;, referrer=#39;# 39;.$referrers.#39;# 39; WHERE page=#39;# 39;.$ 第39頁39;# 39;;
#否則#在it $sqlCmd = #39中插入新的value;插入統(tǒng)計(jì)(第頁,ip,views,referrer)VALUES(#39;#39;.$ 第39頁39;, # 39;# 39;.$ips.#39;# 39;,# 39;# 39;.$views.#39;# 39;,# 39;# 39;.$referrers.#39;# 39;)# 39;; # executecommandssqliteexec($handle,$sqlCmd);
這就是它的過程PHP. 回顧一下,我們發(fā)現(xiàn)訪問者IP地址和引用使用值來創(chuàng)建兩個(gè)字符串,增加頁面視圖的數(shù)量,并將所有這些值放入數(shù)據(jù)庫。
現(xiàn)在只剩下一個(gè)任務(wù)了。我們必須展示網(wǎng)絡(luò)統(tǒng)計(jì)數(shù)據(jù)。我們把下面的文件display放進(jìn)去PHP:ltDOCTYPEhtmlPUBLICquot;-//W3C//DTDXHTML 1.0transitional//分號(hào);引用;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional。DTD引用;燃?xì)廨啓C(jī);書信電報(bào);html xmlns=quot;http://www.w3.org/1999/xhtmlquot; dir=報(bào)價(jià);ltrquot;lang=quot;在美國;燃?xì)廨啓C(jī);書信電報(bào);頭部gt;lt;metahttp-當(dāng)量=quot;Content-類型quot;Content=報(bào)價(jià);文本/html;charset=UTF-8quot/燃?xì)廨啓C(jī);書信電報(bào);一)所有權(quán);(1)Web Statistic)sdisplaylt/標(biāo)題;lt/頭部gt;書信電報(bào);車身gt;
lt;PHP#打開數(shù)據(jù)庫$handle=sqlite#打開($SERVER。#39/統(tǒng)計(jì)數(shù)據(jù)庫#39;,0666,$sqlite錯(cuò)誤)或die($sqlite錯(cuò)誤);#Get all the statistics $sqlGet = #39;SELECT * FROM stats#39;; $result=sqlitequery($handle,$sqlGet);#創(chuàng)建無序列表echo quot;書信電報(bào);烏爾格特;nquot;##如果有results If($result){$頁views =0;$unique_visitors = 0; # fetch而($info=sqliteu82array($result)){#獲取頁面,views,ips和referrers$page=$info;$views =$信息;$ips=$信息;$referrers=$info;#如果($views ==1)echo quot;tlt; 一)輕的;(1)ntt)lt;pgt;美元頁面已瀏覽$viewstime:lt;/前列腺素T;恩庫特;;else echo quot;tlt; 一)輕的;(1)ntt)lt;pgt;美元頁面已瀏覽$viewstimes:lt;/前列腺素T;nquot;;#Updatepage views$頁views+=$views;#Parse the data of IPs and Referrers using process.php#39;s code preg_match_all(#39;%(d+((*))%#39;,$ips, $matches ); # 查找數(shù)據(jù)的大小$size=count($matches);#創(chuàng)建子列表echo quot;ttlt;烏爾格特;nquot;##循環(huán)($i=0;$我lt;$大??;$i++){#找到訪問的number$num=$matches;
#查找IP address$ip=$matches;#如果($num==1)echo quot;ttt升;利格;$num時(shí)間乘以$iplt/利格特;恩庫特;;else echo quot;ttt升;利格;$num倍乘以$iplt/利格特;nquot;;#Updateunique訪客的number$uniqueu訪客+++;}#對referrers pregmatchu97)(#39;%(d+((*))%#39;,$referrers, $matches ); $ 大小=計(jì)數(shù)($matches);#循環(huán)遍歷($i=0;$我lt;$大?。?i++){$num=$matches;$referrer = $matches; # 如果($num==1)echo quot;ttt升;利格;$numref勘誤referrerlt/利格特;恩庫特;;else echo quot;ttt升;利格;$numref勘誤表referrerlt/利格特;nquot;;}#結(jié)束子列表echo quot;ttlt/烏爾格特;nquot;##結(jié)束列表元素echo quot;tlt;/利格特;nquot;;}回音quot;tlt; 一)輕的;(1)Total)unique訪客:$unique\訪客SLT/利格特;恩庫特;;回音quot;tlt; 一)輕的;(1)Total)page views:$第views頁lt/利格特;nquot;;}#結(jié)束無序列表echo quot;lt/烏爾格特;nquot;;#close數(shù)據(jù)庫sqliteclose($handle);燃?xì)廨啓C(jī);
lt/車身gt;lt/htmlgt公司;
這看起來讓人望而生畏,但和過程非常相似PHP. 它解析頁面視圖IP地址,并從數(shù)據(jù)庫中引用它。然后,它繼續(xù)以無序列表格式輸出它們。
http://m.ezekroy.com/jianzhanzhishi/796.html 如何創(chuàng)建自己的程序(Javascript,ajax,PHP)