本文目錄一覽:
怎麼用php寫個在線訪問人數統計
你所說的“其中一個人關閉了網站”是一個很明顯的錯誤,網站的來訪者所關閉的不是“網站”,只是他自己的瀏覽器。
從 Web 服務的機制上來說,服務器只是接收到對某個網頁的請求後把相應的 HTML 格式的內容(可能包括 JavaScript程序)發送給請求者以後就關閉連接,至於瀏覽器端的用戶是什麼時候關閉瀏覽器(或者說是轉移去查看別的網站的網頁去了)服務器端是得不到任何信息的。
PHP、ASP、JSP 之類的網頁訪問只是服務器在發送 HTML 格式的內容之前需要先執行一下相應的文件里的程序,得到 HTML 格式的內容之後再發送而已,原理上還是發送完就關閉與請求者的連接。
服務器能得到的信息是接收來訪者發來的網頁請求信息的時候隨同而來的IP地址,至於這個IP地址對應的用戶什麼時候跳轉去看別的網站的網頁去了服務器得不到任何信息。在你的 PHP 程序中,可以把得到一個來訪者的IP地址的時候就給作為一個累加器用的跨網頁文件跨不同來訪者共享的變量添加1,20分鐘之內沒再接收到那個IP地址發來的請求就將累加器減1,這樣,你把那個累加器內容顯示出來就能反映你的網站在最近20分鐘內有多少個IP來訪問過,這個數就近似地反映了你的網站“在線人數”。
PHP中如何實現在線人數的統計和顯示
要使用數據庫,建立一個表,比如名字是online,至少有以下列:
name_ip 存放登錄用戶名,未登錄的存放IP,char類型
url 存放每個頁面的地址,char類型
last_time 存放刷新頁面的最後時間,int類型
表的主鍵是:name_ip+url
每個頁面一開始就要刷新這個表,使用的SQL是:
$name_ip=’用戶名或者IP’;//你能搞定
$url=$_SERVER[“PHP_SELF”];
$time=time();
$sql=”replace delayed into online (name_ip,url,last_time) values (‘$name_ip’,’$url’,$time)”;
mysql_query($sql);
獲取某頁面在線人數的查詢是語句
$limit=time()-10*60;//10分鐘內訪問的認為在線,10分鐘*60秒/分鐘
$sql=”select count(*) from online where url=’$url’ and last_time=$limit”;
$res=mysql_query($sql);
list($online_count)=mysql_fetch_row($res);
mysql_free_result($res);
echo “本頁面在線人數: $online_count”;
PHP如何統計在線人數
原理:根據不同的IP統計出當前有多少人在線。
實現方式:可以用數據庫,也可以用文本。
我這裡用了文本實現。
$user_online = “count.php”; // 保存人數的文件
touch ( $user_online ); // 如果沒有此文件,則創建
$timeout = 30; // 30秒內沒動作者,認為掉線
$user_arr = file_get_contents ( $user_online );
$user_arr = explode ( ‘#’, rtrim ( $user_arr, ‘#’ ) );
print_r ( $user_arr );
$temp = array ();
foreach ( $user_arr as $value ) {
$user = explode ( “,”, trim ( $value ) );
if (($user [0] != getenv ( ‘REMOTE_ADDR’ )) ($user [1] time ())) { // 如果不是本用戶IP並時間沒有超時則放入到數組中
array_push ( $temp, $user [0] . “,” . $user [1] );
}
}
array_push ( $temp, getenv ( ‘REMOTE_ADDR’ ) . “,” . (time () + ($timeout)) . ‘#’ ); // 保存本用戶的信息
$user_arr = implode ( “#”, $temp );
// 寫入文件
$fp = fopen ( $user_online, “w” );
flock ( $fp, LOCK_EX ); // flock() 不能在NFS以及其他的一些網絡文件系統中正常工作
fputs ( $fp, $user_arr );
flock ( $fp, LOCK_UN );
fclose ( $fp );
echo “當前有” . count ( $temp ) . “人在線”;
想在首頁弄個在線訪問人數,一個假象的數字,用PHP怎麼實現呢
if(isset($_COOKIE[‘online_users’]))
{
$online_users = $_COOKIE[‘online_users’];
}else{
$online_users = rand(500,1000);
setcookie(‘online_users’,$online_users,time()+300);
}
echo $online_users;
這個需求用cookie其實很好處理,然後五分鐘改變一次就完了
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/182174.html