程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> php高手進階:寫一個用戶在線顯示的程序

php高手進階:寫一個用戶在線顯示的程序

編輯:關於PHP編程


  在開始這篇文章時,作者假設讀者已能夠寫出一個用戶的登入認證程序.
  ----------------------------------------------------------
  記數器可完成訪問 web 頁的總次數,但卻不能得知一個時段中訪問量的動態記載,下面就來介紹如何寫一個各個時段動態顯示訪問量的方法.
  
  要記載訪問量,首先就要在 MySQL(和PHP搭配之最佳組合) 內建立一個數據庫,姑且給這個數據庫取名為 line,同時建立一個名為 line 的數據表,表內的字段分別為"用戶名(name varchar(20)),時間(time datetime)".當然讀者也可根據需要增加數據表的字段.
  
  建立好數據庫後,就可以開始設計程序了,現在先理清一下思路,要想顯示訪問量,當然數據庫就必須要有記錄,我已假設讀者有能力寫一個用戶登入程序了,所以向數據庫添加紀錄可在登入程序假設為 login.php(做為現在的主流開發語言) 裡添加:
  
  先給現在時間付值:$time=date(Y-m-d H:i:s);
  MySQL(和PHP搭配之最佳組合)_select_db(line);
  MySQL(和PHP搭配之最佳組合)_query("insert into line (name,time) values($name,$time)");
  
  好了,現在每一位登入的用戶在數據庫裡都有了一個記錄,下面就來完成用戶在線顯示的程序 line.php(做為現在的主流開發語言):
  
    MySQL(和PHP搭配之最佳組合)_connect("local","","");
  MySQL(和PHP搭配之最佳組合)_select_db(line);
  $result=MySQL(和PHP搭配之最佳組合)_query("select * from line");
  $num=MySQL(和PHP搭配之最佳組合)_numrows($result);
  if (!empty($num)) {
  echo "";
  echo "現在在線人數為:$num";
  echo "";
  for($i=0;$i<$num;$i++){
  $name=MySQL(和PHP搭配之最佳組合)_result($result,$i,"name");
  echo "用戶:$name";
  }
  }
  ?>
  
  上面這段程序已能顯示所有在線的用戶人數及各用戶名,當然這個程序還很不完善.如果其中一個用戶登出離開後,數據庫就不應該有此用戶的記錄所以,還得在登出程序假設為 logout.php(做為現在的主流開發語言) 內加上刪除功能:
  
  MySQL(和PHP搭配之最佳組合)_select_db(line);
  MySQL(和PHP搭配之最佳組合)_query("delete from line where name=$name");
  
  這時一個基本的用戶在線功能已經完成,接下來繼續在 line.php(做為現在的主流開發語言) 內增加代碼使功能更加完善,首先我們得規定用戶在多長時間沒繼續浏覽 line.php(做為現在的主流開發語言) 時就認為該用戶已經離開,這裡給定一個時間限制為 5 分鐘,也就是說程序將顯示從現在開始的前 5 分鐘的用戶情況,所以必須 line.php(做為現在的主流開發語言) 內設置一個現在時間告知程序從這個時間開始執行,然後實現程序執行時把數據庫內記錄的時間減去現在時間大於 5 分鐘的所有記錄刪除,這樣任何用戶在執行 line.php(做為現在的主流開發語言) 時,都能看到 5 分鐘內的所有在線的用戶,完成這個功能需要以下這個數據庫語句:
  
  delete from line where time  minute)
  
  但是其中還有一個問題就是如果有個用戶一直在不停地執行 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(和PHP搭配之最佳組合)_connect("local","","");
  MySQL(和PHP搭配之最佳組合)_select_db(line);
  
  //更新用戶的記錄
  MySQL(和PHP搭配之最佳組合)_query("update line set time=$time where name=$cookiename");
  
  //刪除超過 5 分鐘的用戶記錄
  MySQL(和PHP搭配之最佳組合)_query("delete from line where time  
  $result=MySQL(和PHP搭配之最佳組合)_query("select * from line");
  $num=MySQL(和PHP搭配之最佳組合)_numrows($result);
  if (!empty($num)) {
  echo "";
  echo "現在在線人數為:$num";
  echo "";
  for($i=0;$i<$num;$i++){
  $name=MySQL(和PHP搭配之最佳組合)_result($result,$i,"name");
  echo "用戶:$name";
  }
  }
  ?>
  
  好用戶在線顯示功能完成.
  

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved