用PHP做網站訪客統計,聽起來好像有點多此一舉,想想有那麼多好用的統計工具不用,偏偏想自己寫?不過,有時還是會依照專案需求走吧。
就當我是在廢話吧,還是想嘮叨PV、UV、IP三者的定義與差異。
PV(page view)(推薦學習:PHP程式設計從入門到精通)
頁面訪問量,即此頁面(網站)被打開過多少次,例如打開本博首頁然後有電擊進入了本文,此時便為本博貢獻了2PV,本文1PV,如果您現在手滑按了下F5,那麼就為本博貢獻了3PV(首頁1 本文2)。
UV(Unqie Vistor)
獨立訪客數,指的是不同的、透過網路存取、瀏覽一個網頁的自然人。一般情況下,是使用COOKIE進行區分。例如,您現在訪問了本文,將為本博UV加1,隨後您關閉了瀏覽器,接著您的朋友又用您的電腦訪問了本博,此時,UV是不會變的,因為瀏覽器的COOKIE沒變。再例如,您使用新浪微博登入存取的本博,隨後退出帳號,又用騰許微博登入造訪本博,那麼先後就會給本博UV加2,因為瀏覽器記錄到了兩個使用者。
IP(internet protocol)
獨立IP數目,記錄存取本博的真實IP數量,可以使用程式記錄,也可以透過分析伺服器日誌統計。
前面也有說到IP和UV這裡有些繞。可以拿下面幾種情況來理解。
您家裡有多台電腦,都連了家裡的一個路由器,這是透過不同的PC訪問本博,只會記錄一個IP數,因為對外IP是一樣的。但會記錄多個UV,因為記錄到了多個不同的COOKIE,甚至在同一台電腦上使用不同的瀏覽器都有可能會增加兩個UV。在登入的情況下,就算同一PC、同一瀏覽器,只要是多個使用者訪問,都會加多個UV的。此時不巧您忽然斷網了,過了一會重新撥號上網,IP變了,這時候本博的IP數會再加1,但是如果還是使用剛才的PC,剛才的瀏覽器訪問本博的話,UV是不會變的,因為您的的COOKIE沒變。
這樣大概就可以理解了吧?當然,或許您會說,UV存在客戶端的COOCKIE中,這不就代表可以偽造了嗎?這個安心啦,首先不說誰會沒事搞這個,其次是我記得《大數據時代》中,作者好像反覆強調數據的非準確性。
<?php header('Content-type:text/html;charset=utf-8'); //统计流量(人数,访问次数,用户IP) //假设用户访问,得到IP地址 $remote = $_SERVER['REMOTE_ADDR']; //拼凑要写入到文件的数据:ip|2018-5-20 10:24:15 $write = $remote . '|' . date('Y-m-d H:i:s'); //输出信息:挡墙网页已经被第几次访问,当前用户是第几次来访问 $str = file_get_contents('record.txt'); //定义一个变量保存当前用户的点击次数 $clickcount = 1; //判断当前有没有记录访问信息 if($str){ //有数据 //以行区分当前文件有多少行 $rows = explode("\r\n",$str); //获取已经访问过的用户的数量 $count = count($rows) + 1; //判断当前用户是第几次访问该网页 foreach($rows as $value){ //value代表一个访问记录 $ip = explode("|",$value); //判读是不是当前用户查看的 if($ip[0] == $remote){ //以前访问的记录与当前用户的ip相同 $clickcount++; } } //修改write $write = "\r\n" . $write; }else{ //当前用户是第一个来访问该网页 $count = 1; } //写入数据 file_put_contents('record.txt',$write,FILE_APPEND); //输出信息 echo "当前网页已经是第{$count}次被访问<br/>"; echo "您是第{$clickcount}次来访问该网页<br/>"; //localhost/record.php
以上是php網站的訪客人數怎麼統計的詳細內容。更多資訊請關注PHP中文網其他相關文章!