當前位置:首頁 » 網站資訊 » php網站如何判斷用戶在線
擴展閱讀
手機起名字軟體 2025-09-16 00:56:36

php網站如何判斷用戶在線

發布時間: 2022-09-10 18:55:38

❶ php中如何判斷用戶是否在線

代碼很簡單,但實現邏輯自己要想明白,

網站頭公共文件加下邊代碼,意思即每個頁面都有包含下面這個php代碼,總之你懂,
這樣,只要有用戶登陸,或者打開別的頁面,就會往all_user表裡的action_time欄位添
加操作時間,當你檢測用戶是否在線,就把用戶操作時間action_time轉化為幾分鍾前,小時前,
,知道每個用戶是幾分幾小時前操作,就可以把幾分鍾前的顯示在線,而幾小時前的,顯示離線或幾小時前,

例如用戶15:30分登陸,打開幾個頁面,然後就關電腦或出門,這時all_user表已經記錄了操作時間
網站可以用wordTime($time)顯示他的操作時間離現在為2分鍾前,或20分鍾前,將直接顯示在線。
至於多少分鍾不操作算離線,自己調分鍾數
<?php
strtotime("now");//取伺服器當前時間戳,得到值如1533213376

$sql="UPDATEall_userSETaction_time=$action_timeWHEREuserid=$cook_userid";
//往用戶表裡更新操作時間,具體要填自己的表名和用戶名的欄位名

?>//======================下邊功能代碼可直接用
<?php
functionwordTime($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";echowordTime($time);結果將輸出20分鍾前
?>

不存在頻繁操作資料庫問題,因為打開網頁都要查詢mysql 用戶名等這些,也不差這條更新命令,

❷ 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怎麼檢測某個用戶已登錄

加入用戶登錄的階段變數是Username,那麼用判斷語句則是:
如果不用HTML代碼的如下:
<?php
if($_SESSION['Username']==""){
echo "您未登陸!";
}else{
echo "您已登陸!"
} ?>
如果用HTML代碼的如下
<?php if($_SESSION['Username']==""){ ?><table><tr><td>您已經登陸了!</td></tr></table><?php }else{ ?><table><tr><td>您未登陸或登陸超時!</td><td><a href="#">去登陸</a></tr></table><?php } ?>
解釋:
<?php
如果(階段變數['Username']完全等於空)顯示
您未登錄
否則顯示
您已登錄
?>

❹ php 如何得知ip是否在線

比較簡單的就是資料庫存session,默認的session都是在文件里存放著

客戶端請求你的站點,會自動創建一個session,(不管是不是你的會員都會自動創建session)。

1,你需要一個可以實現session入庫的類,此類很多,實現原理其實很簡單,你也可以自己寫
2,在session中加入ip(比較好的session類中都會有這個欄位)
3,查session表數據有沒有你需要的ip,沒有就不在線了

❺ PHP網站中,如何判斷用戶是否是在線的狀態

普通http網站是一種無狀態連接,每次一個請求,一個應答,沒有長連接狀態。

但是可以通過記錄訪問時間,來確定用戶的狀態。

  1. 用戶登錄後,每次訪問,更新一下最近訪問時間在資料庫里

  2. 在用戶頁面的公共部分,做一個定時輪詢,n秒一次(防止用戶打開頁面後放著不動,看資料或者做別的)

  3. 伺服器端做一個定時,將最近時間在n秒內的用戶設為在線狀態,將最近時間大於n秒的(說明已經關了頁面),設為離線狀態。 如果是普通 web空間無法配置定時器,可以在每次用戶訪問時處理一次(如果用戶量大,需要做時間判斷,防止同時訪問量多時多次重復處理,影響伺服器性能)

  4. 如果能確定一個用戶的訪問,只有一個瀏覽器窗口,可以在窗口裡加一個關閉事件(onbeforeunload),在此事件中發送一個退出請求,主動設為離線狀態。這樣狀態管理會更完美一些

這樣基本就可以完成一個在線狀態的管理。具體n 設為多少可根據情況而定,一般5-30秒都是合理的,太短了伺服器壓力比較大,太長了誤差會比較大

❻ 關於php或者JS判斷用戶是否已經登陸/在線請具體demo

可以利用cookie記錄登錄狀態,特意寫了個例子,已做過測試,僅供參考。
兩個文件:login.php(登錄)、question.php(提交問題)。


login.php代碼如下:

<?php
if($_GET['success']){
echo'<script>window.location.href="login.php";</script>';//firefox下cookie有延時,需要再次刷新
}
$user=$_COOKIE['user'];//取cookie中的值
$iflogin=$_COOKIE['iflogin'];
if($iflogin&&$user){//一小時之內不用重復登錄
if($_GET['del']){//清除cookie
setcookie('user','',time()-3600);
setcookie('passwd','',time()-3600);
setcookie('iflogin','',time()-3600);
echo'<script>window.location.href="login.php";</script>';
}
echo$user.'wellcome,<ahref="login.php?del=1">logout</a>';//登錄成功的狀態
}else{
if($_POST['sub']=='tijiao'){
$user=$_POST['user'];
$passwd=$_POST['passwd'];
//將用戶、名密碼與用戶表進行比對,省略……

//如果正確,將登錄相關信息保存到cookie中
if($user&&$passwd){
setcookie("user",$user,time()+3600);//保存用戶名,一小時
setcookie("passwd",$passwd,time()+3600);//保存密碼,一小時
setcookie("iflogin",1,time()+3600);//保存登錄狀態,一小時
}
//登錄成功,刷新頁面或跳轉
echo'<script>window.location.href="login.php?success=1";</script>';//成功後第一次刷新
}
?>
<formaction="login.php"method="post">
username:<inputtype="text"name="user"/>
password:<inputtype="text"name="passwd"/>
<inputtype="submit"value="tijiao"name="sub"/>
</form>
<?php
}
?>


question.php代碼如下:

<?php
if($_POST['sub']=='tijiao'){
$q1=$_POST['q1'];
$if_login=$_COOKIE['iflogin'];//取cookie中的登錄狀態
if($if_login){
//登錄了,判斷tijiao的問題無誤,入庫,省略……

alert_msg('恭喜,tijiao成功!','question.php');//保存成功後提示並刷新
exit();
}
//沒登陸,提示請登錄並跳轉到登錄頁
alert_msg('抱歉,請先登錄!','login.php');
}
//提示函數,默認不跳轉,當$url有值時跳轉
functionalert_msg($msg,$url=''){
if($url){
echo'<script>alert("'.$msg.'");window.location.href="'.$url.'";</script>';
}else{
echo'<script>alert("'.$msg.'");</script>';
}
}
?>
<formaction="question.php"method="post">
question1:<inputtype="text"name="q1"/>
<inputtype="submit"value="tijiao"name="sub"/>
</form>