首頁  >  文章  >  後端開發  >  寫一個用戶在線顯示的程式_PHP教程

寫一個用戶在線顯示的程式_PHP教程

WBOY
WBOY原創
2016-07-21 16:06:09798瀏覽

在開始這篇文章時,作者假設讀者已能夠寫出一個用戶的登錄認證程序.
-------------------------- --------------------------------
記數器可完成訪問web 頁的總次數,但卻不能得知一個時段中訪問量的動態記載,下面就來介紹如何寫一個各個時段動態顯示訪問量的方法.

要記載訪問量,首先就要在mysql 內建立一個數據庫,姑且給這個資料庫取名為line,同時建立一個名為line 的資料表,表內的欄位分別為"使用者名稱(name varchar(20)),時間(time datetime)".當然讀者也可依需求增加資料表的字段.

建立好數據庫後,就可以開始設計程序了,現在先理清一下思路,要想顯示訪問量,當然數據庫就必須要有記錄,我已假設讀者​​有能力寫一個用戶登錄程式了,所以向資料庫添加紀錄可在登錄程式假設為login.php 裡添加:

先給現在時間付值:$time=date('Y-m-d H:i:s');
mysql_select_db(line);
mysql_query("insert into line (name,time) values('$name','$time')");

好了,現在每一位登入的使用者在資料庫裡都有了一個記錄,下面就來完成使用者線上顯示的程式line.php:


mysql_connect("local","","");
mysql_select_db(line);
$result=mysql_query("select * from line");
$num=mysql_numrows($result);
if (!empty($num)) {
echo "

";
for($i =0;$i$name=mysql_result($result,$i,"name");
echo "";
}
}
?>

上面這段程式已能顯示所有線上的使用者人數及各使用者名稱,當然這個程式還很不完善.如果其中一個使用者登出離開後,資料庫就不應該有此使用者的記錄所以,還得在登出程式假設為logout.php 內加上刪除功能:

mysql_select_db(line);
mysql_query("delete from line where name='$name'");

這時一個基本的用戶在線功能已經完成,接下來繼續在line.php 內增加代碼使功能更加完善,首先我們得規定用戶在多久沒繼續瀏覽line.php 時就認為該用戶已經離開,這裡給定一個時間限制為5 分鐘,也就是說程序將顯示從現在開始的前5 分鐘的用戶情況,所以必須line.php 內設定一個現在時間告知程式從這個時間開始執行,然後實現程式執行時把資料庫內記錄的時間減去現在時間大於5 分鐘的所有記錄刪除,這樣任何使用者在執行line.php 時,都能看到5 分鐘內的所有在線的用戶,完成這個功能需要以下這個數據庫語句:

delete from line where timeminute)

但是其中還有一個問題就是如果有個用戶一直在不停地執行line.php 超過5 分鐘以上時,程式必須得分辨出該用戶並一直顯示該用戶,在這就得利用cookie來實現更新資料庫的時間記錄了,因為是登錄認證的,所以會有個cookie 來記住用戶的資料的,假設這個記錄用戶姓名的cookie 變數為$cookiename (具體的變數視cookie 的設定而定) ,剩下的就很好辦了,利用這個cookie 變數完成資料庫的修改:

update line set time='$time' where name='$cookiename'

下面來完善line.php:


//設定現在的時間
$time=date('Y-m-d H:i:s');
mysql_connect("local","" ,"");
mysql_select_db(line);

//更新使用者的記錄
mysql_query("update line set time='$time' where name='$cookiename'");

//刪除超過5 分鐘的使用者記錄
mysql_query("delete from line where time
$result= mysql_query("select * from line");
$num=mysql_numrows($result);
if (!empty($num)) {
echo "
";
echo "現在線上人數為:$num";
echo "
使用者:$name
";
for($i=0;$i$name=mysql_result($result,$i,"name");
echo "";
}
}
?>

好用戶線上顯示功能完成.

www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/315471.htmlTechArticle在開始這篇文章時,作者假設讀者已能夠寫出一個用戶的登錄認證程序. --- -------------------------------------------------- ----- 記數器可完成存取web 頁...
" ;
echo "現在線上人數為:$num";
echo "
使用者:$name
陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn