本文目錄一覽:
PHP網站中,如何判斷用戶是否是在線的狀態?
首先把session弄清楚 session是和cookie相似的東西,都用於保存用戶的私有信息。不同的是cookie保存於客戶端而session保存於伺服器端 既然是「私有信息」那麼在不同的瀏覽器進程間是不能互訪的 不錯,ASP可以通過endSession在用戶註銷session時通過修改Application中的變數值來達到記錄用戶狀態的目的。當然也有例外 php有session_destroy用於註銷session,當然使用的是php預定的方式 但你可以用session_set_save_handler函數將php預定的處理轉向你自己定義的函數。有如asp中修改global.asa一般 一旦你設置了session處理函數,這些問題就都在你掌控之中了
php中如何判斷用戶是否在線
代碼很簡單,但實現邏輯自己要想明白,
網站頭公共文件加下邊代碼,意思即每個頁面都有包含下面這個php代碼,總之你懂,
這樣,只要有用戶登陸,或者打開別的頁面,就會往 all_user 表裡 的action_time欄位添
加操作時間, 當你檢測用戶是否在線,就把用戶操作時間action_time轉化為 幾分鐘前,小時前,
,知道每個用戶是 幾分幾小時前操作,就可以把幾分鐘前的顯示在線,而幾小時前的,顯示離線或幾小時前,
例如用戶15:30分登陸,打開幾個頁面,然後就關電腦或出門, 這時all_user 表已經記錄了操作時間
網站可以用 wordTime($time)顯示他的操作時間離現在為2分鐘前,或20分鐘前,將直接顯示在線。
至於多少分鐘不操作算離線,自己調分鐘數
?php
strtotime(“now”); //取伺服器當前時間戳,得到值如1533213376
$sql=”UPDATE all_user SET action_time=$action_time WHERE userid=$cook_userid”;
//往用戶表裡更新 操作時間,具體要填自己的表名和用戶名的 欄位名
?
//======================下邊功能代碼可copy 直接用
?php
function wordTime($time) {
$time = (int) substr($time, 0, 10);
$int = time() – $time;
$str = ”;
if ($int = 2){
$str = sprintf(‘在線’, $int);
}elseif ($int 60){
$str = sprintf(‘在線’, $int); //60秒內
}elseif ($int 300){
$str = sprintf(‘在線5’, $int); //5分鐘內
}elseif ($int 1800){
$str = sprintf(‘在線+’, floor($int / 60)); //30分鐘內
}elseif ($int 3600){
$str = sprintf(‘%d分鐘前’, floor($int / 60)); //30-60分鐘內
}elseif ($int 86400){
$str = sprintf(‘%d小時前’, floor($int / 3600));
}elseif ($int 2592000){
$str = sprintf(‘%d天前’, floor($int / 86400));
}elseif ($int 2592000*30){
$str = sprintf(‘%d月前’, floor($int / 2592000));
}else{
$str = “”;//date(‘Y-m-d’, $time);
}
//調用方法,把值給到變數time 如: $time=”1533213376″; echo wordTime($time); 結果將輸出 20分鐘前
?
不存在頻繁操作資料庫問題,因為打開網頁都要查詢mysql 用戶名等這些,也不差這條更新命令,
php聊天系統怎麼樣判斷用戶是不是在線
這個其實有很多種處理方案,我給兩個方案吧,
方案一、用戶登陸成功後,將用戶的信息,如用戶ID保存到session當中去,然後我們去判斷session當中是否有當前用戶ID就可以判斷出該用戶是否在線了,然後用戶退出的時候,將此session清除就可以啦;
方案二、
用戶表設置一個欄位,用於保存用戶的登陸狀態,如果用戶登陸成功才設置成1,否則設置成0,然後當要判斷用戶是否登陸的時候,只要到資料庫當中去取這個值判斷就可以啦,用戶退出前,要先將這個狀態Update成0狀態就可以啦,不過這樣的話,當由於斷電而非法關閉的時候,用戶狀態就沒有辦法更新到資料庫當中啦;
兩個方案自認為還是方案一要好些啦;
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/254103.html