PHP基于cookie實(shí)現(xiàn)統(tǒng)計(jì)在線人數(shù)功能示例
本文實(shí)例講述了PHP基于cookie實(shí)現(xiàn)統(tǒng)計(jì)在線人數(shù)功能。分享給大家供大家參考,具體如下:
online.php文件:
<?php /* @ PHP 在線人數(shù)統(tǒng)計(jì)程序 Copyright (c) www.vgot.cn by Pader 1:25 2009年1月7日 Homepage:http://www.vgot.cn QQ: 270075658 How to use it: <script src="online.php"></script> note: 一般獨(dú)立在線人數(shù)統(tǒng)計(jì)程序都是統(tǒng)計(jì)在線的IP數(shù),而這并不準(zhǔn)確 例如局域網(wǎng)的訪問者,比如公司,學(xué)校機(jī)房和網(wǎng)吧,雖然內(nèi)網(wǎng)IP不同,但是外網(wǎng)IP都是一樣 如果同一個局域網(wǎng)的無論多少人人訪問你的網(wǎng)站則只被認(rèn)為是一個人 這個小巧的程序解決了此問題,它以電腦為單為,每臺電腦便算一個訪問者 當(dāng)然因?yàn)槭褂玫氖荂OOKIE,如果你在同一臺電腦上使用兩種不同核心的瀏覽器訪問那就別當(dāng)別論了 */ $filename = 'online.txt'; //數(shù)據(jù)文件 $cookiename = 'VGOTCN_OnLineCount'; //cookie名稱 $onlinetime = 600; //在線有效時(shí)間,單位:秒 (即600等于10分鐘) $online = file($filename); $nowtime = time(); $nowonline = array(); /* @ 得到仍然有效的數(shù)據(jù) */ foreach($online as $line) { $row = explode('|',$line); $sesstime = trim($row[1]); if(($nowtime - $sesstime) <= $onlinetime) { //如果仍在有效時(shí)間內(nèi),則數(shù)據(jù)繼續(xù)保存,否則被放棄不再統(tǒng)計(jì) $nowonline[$row[0]] = $sesstime; //獲取在線列表到數(shù)組,會話ID為鍵名,最后通信時(shí)間為鍵值 } } /* @ 創(chuàng)建訪問者通信狀態(tài) 使用cookie通信 COOKIE 將在關(guān)閉瀏覽器時(shí)失效,但如果不關(guān)閉瀏覽器,此 COOKIE 將一直有效,直到程序設(shè)置的在線時(shí)間超時(shí) */ if(isset($_COOKIE[$cookiename])) { //如果有COOKIE即并非初次訪問則不添加人數(shù)并更新通信時(shí)間 $uid = $_COOKIE[$cookiename]; } else { //如果沒有COOKIE即是初次訪問 $vid = 0; //初始化訪問者ID do { //給用戶一個新ID $vid++; $uid = 'U'.$vid; } while (array_key_exists($uid,$nowonline)); setcookie($cookiename,$uid); } $nowonline[$uid] = $nowtime; //更新現(xiàn)在的時(shí)間狀態(tài) /* @ 統(tǒng)計(jì)現(xiàn)在在線人數(shù) */ $total_online = count($nowonline); /* @ 寫入數(shù)據(jù) */ if($fp = @fopen($filename,'w')) { if(flock($fp,LOCK_EX)) { rewind($fp); foreach($nowonline as $fuid => $ftime) { $fline = $fuid.'|'.$ftime."\n"; @fputs($fp,$fline); } flock($fp,LOCK_UN); fclose($fp); } } echo 'document.write("'.$total_online.'");'; ?>
通過注釋中的說明可知,如下js語句訪問即可:
<script src="online.php"></script>
更多關(guān)于PHP相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《PHP中cookie用法總結(jié)》、《PHP數(shù)組(Array)操作技巧大全》、《PHP基本語法入門教程》、《PHP運(yùn)算與運(yùn)算符用法總結(jié)》、《PHP網(wǎng)絡(luò)編程技巧總結(jié)》及《php字符串(string)用法總結(jié)》
希望本文所述對大家PHP程序設(shè)計(jì)有所幫助。
- php下用cookie統(tǒng)計(jì)用戶訪問網(wǎng)頁次數(shù)的代碼
- php利用cookie實(shí)現(xiàn)訪問次數(shù)統(tǒng)計(jì)代碼
- PHP基于cookie與session統(tǒng)計(jì)網(wǎng)站訪問量并輸出顯示的方法
- php中cookie實(shí)現(xiàn)二級域名可訪問操作的方法
- php中記錄用戶訪問過的產(chǎn)品,在cookie記錄產(chǎn)品id,id取得產(chǎn)品信息
- php使用cookie顯示用戶上次訪問網(wǎng)站日期的方法
- php使用Cookie控制訪問授權(quán)的方法
- php使用Session和文件統(tǒng)計(jì)在線人數(shù)
- php+memcache實(shí)現(xiàn)的網(wǎng)站在線人數(shù)統(tǒng)計(jì)代碼
相關(guān)文章
PHP 開發(fā)者該知道的 5 個 Composer 小技巧
這篇文章主要介紹了PHP 開發(fā)者該知道的 5 個 Composer 小技巧,需要的朋友可以參考下2016-02-02php中配置文件操作 如config.php文件的讀取修改等操作
對形如config.php文件的讀取,修改等操作的代碼,需要的朋友可以參考下2012-07-07PHP從零開始打造自己的MVC框架之路由類實(shí)現(xiàn)方法分析
這篇文章主要介紹了PHP從零開始打造自己的MVC框架之路由類實(shí)現(xiàn)方法,結(jié)合實(shí)例形式分析了MVC框架路由類的原理及定義方法,需要的朋友可以參考下2019-06-06PHP中define() 與 const定義常量的區(qū)別詳解
這篇文章主要介紹了PHP中define() 與 const定義常量的區(qū)別,結(jié)合實(shí)例形式分析了php中使用define()與const定義常量的具體使用原理、技巧與相關(guān)用法區(qū)別,需要的朋友可以參考下2019-06-06