本文目錄一覽:
php利用session怎麼判斷用戶已離線
方法有好多種,但應該都跟心跳請求類似。
首先用戶打開一個頁面後,頁面裡面會有段js腳本來反覆請求一個地址,即判斷用戶是否在線的地址(跟新浪微博隔一段時間請求一個地址查看是否有新消息類似)
比如判斷頁面為A,打開的頁面為B ,則B 內的js腳本以ajax請求的方式每隔1分鐘來訪問A,A可以記錄下最後一次的請求時間,然後你就可以拿這個最後一次請求的時間來判斷用戶是否離線,比如B每隔1分鐘發送一次請求,如果最後活動時間與當前時間相差兩分鐘,就可以認為用戶已離線。
還有一種方法,就是利用js的onunload事件
當用戶關閉瀏覽器的時候,可以用onunload發送一個請求,註銷掉session,或者將用戶狀態置為離線,都可以,不過沒有上面靠譜就是,因為F5刷新頁面也同樣觸onunload事件
方法還有很多,結合你需要實現的功能和業務,多想想就出來了
PHP如何獲取本地時間與伺服器時間
PHP獲取伺服器時間和本地時間很簡單,可以用內置函數實現,具體代碼如下:
記得給分!!!
?php
//獲取伺服器時間
echo date(“Y-m-d h:i:s”);
//獲取本地時間(也可以說是你所在時區時間)
date_default_timezone_set(‘地區’); //地區:中國是PRC,或shanghai,chongqing都可
echo date(“Y-m-d h:i:s”);
?
當然獲取本地時間還可以用JS實現,如下:
script type=”text/javascript”
function showLocale(objD){
var str,colorhead,colorfoot;
var yy = objD.getYear();
if(yy1900) yy = yy+1900;
var MM = objD.getMonth()+1;
if(MM10) MM = ‘0’ + MM;
var dd = objD.getDate();
if(dd10) dd = ‘0’ + dd;
var hh = objD.getHours();
if(hh10) hh = ‘0’ + hh;
var mm = objD.getMinutes();
if(mm10) mm = ‘0’ + mm;
var ss = objD.getSeconds();
if(ss10) ss = ‘0’ + ss;
var ww = objD.getDay();
if ( ww==0 ) colorhead=”font color=\”#000000\””;
if ( ww 0 ww 6 ) colorhead=”font color=\”#000000\””;
if ( ww==6 ) colorhead=”font color=\”#000000\””;
if (ww==0) ww=”星期日”;
if (ww==1) ww=”星期一”;
if (ww==2) ww=”星期二”;
if (ww==3) ww=”星期三”;
if (ww==4) ww=”星期四”;
if (ww==5) ww=”星期五”;
if (ww==6) ww=”星期六”;
colorfoot=”/font”
str = colorhead + yy + “-” + MM + “-” + dd + ” ” + hh + “:” + mm + “:” + ss + ” ” + ww + colorfoot;
return(str);
}
function tick(){
var today;
today = new Date();
document.getElementById(“localtime”).innerHTML = showLocale(today);
window.setTimeout(“tick()”, 1000);
}
tick();
/script
php做用戶在線與離線狀態
在用戶表裡加個session欄位存取時間戳。在文件頭每次刷新就更新它。一定時間不刷新就表示人物離線了。讀取這個會員數據的時候和當前時間戳對比小於一定數就離線了
怎麼判斷用戶是在線狀態還是離線狀態 asp
判斷用戶的在線狀態,後台代碼必須和前台代碼配合方能做到,通常前台代碼用javascript編寫,後台asp jsp php aspx都可以,以asp為例。
大體有兩種思路。
一是即時刷新型,也就是前台每隔幾秒向後台報告一下自己還在線。在後台資料庫內或是Application對象中寫入刷新的時間,後台管理員可以讀取用戶在線時間,如果超過規定的時間未刷新,則可判斷用戶已經離線。這種方式是使用最廣泛的方式,判斷準確無誤,缺點是佔用一定的系統資源,如果在線用戶數量太多,對伺服器的負荷壓力比較大。
二是來去報告型。即上線報告自己來了,離線時報告自己走了,不必定時向後台報告自己是否在線,只要沒報告自己離線,就認為仍然在線。技術上要依賴 DOM 的onload unload 事件,並在客戶端建立cookie,在onload事件中把打開的網頁數寫入cookie,如cookie(“OpenPageCount”)++,只有當 cookie(“OpenPageCount”)==1 時才向後台報告自己上線,大於1只是說明多打開了幾個網頁而已,不必頻繁向後台發送ajax請求,在unload事件中再把cookie減1,如cookie(“OpenPageCount”)–,直到為0才向後台發送離線狀態ajax請求。這種方式準確率也不錯,不必佔用大量的伺服器資源,主要工作都在客戶端判斷完成,缺點是兼容性不夠好,筆者測試IE8+、FF等主流瀏覽器支持得都不錯,但一些廣泛使用的山寨瀏覽器對DOM事件支持不好,如360、遨遊、TT、搜狗等。
相關關鍵技術點:
後台:資料庫、Application對象、日期間隔
前台:javascript DOM Event Cookie setInterval
PHP伺服器時間問題
date(『Y-m-d H:i:s』)
結果取出來顯示的時間總是於本地時間相差8個小時,我的本機是中國標準時間(GTM+8),問題應該是date()取的時間是格林威治時間,那應該怎麼配置一下PHP伺服器呢?
問題原因所在
從php5.1.0開始,php.ini里加入了date.timezone這個選項,默認情況下是關閉的
也就是顯示的時間(無論用什麼php命令)都是格林威治標準時間
和我們的時間(北京時間)差了正好8個小時。
有以下3中方法可以恢復正常的時間。
1、最簡單的方法就是不要用php5.1以上的版本
2、如果一定要用,而且不能修改php.ini,則需要在關於時間的初始化的語句的
上面加上 date_default_timezone_set (『XXX』);
3、一勞永逸,僅限能修改php.ini。打開php.ini查找date.timezone 去掉前面的分號
date.timezone = PRC,重啟http服務(如apache2或iis等)即可
原創文章,作者:IUUU,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/150054.html