當前位置:首頁 » 編程語言 » php判斷用戶在線

php判斷用戶在線

發布時間: 2022-09-07 10:39:16

Ⅰ 關於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>

Ⅱ php是如何判斷在線用戶的

1.用戶登錄.如果用戶名和密碼正確.則將用戶名或者其他唯一的值賦值給session("username")
2.將session("username")存入資料庫.
3.定時檢查session("username")還是否有效.如有效,則在線.

Ⅲ php利用session怎麼判斷用戶已離線

方法有好多種,但應該都跟心跳請求類似。
首先用戶打開一個頁面後,頁面裡面會有段js腳本來反復請求一個地址,即判斷用戶是否在線的地址(跟新浪微博隔一段時間請求一個地址查看是否有新消息類似)
比如判斷頁面為A,打開的頁面為B ,則B 內的js腳本以ajax請求的方式每隔1分鍾來訪問A,A可以記錄下最後一次的請求時間,然後你就可以拿這個最後一次請求的時間來判斷用戶是否離線,比如B每隔1分鍾發送一次請求,如果最後活動時間與當前時間相差兩分鍾,就可以認為用戶已離線。

還有一種方法,就是利用js的onunload事件
當用戶關閉瀏覽器的時候,可以用onunload發送一個請求,注銷掉session,或者將用戶狀態置為離線,都可以,不過沒有上面靠譜就是,因為F5刷新頁面也同樣觸onunload事件

方法還有很多,結合你需要實現的功能和業務,多想想就出來了

Ⅳ php聊天系統怎麼樣判斷用戶是不是在線

這個其實有很多種處理方案,我給兩個方案吧,

方案一、用戶登陸成功後,將用戶的信息,如用戶ID保存到session當中去,然後我們去判斷session當中是否有當前用戶ID就可以判斷出該用戶是否在線了,然後用戶退出的時候,將此session清除就可以啦;

方案二、
用戶表設置一個欄位,用於保存用戶的登陸狀態,如果用戶登陸成功才設置成1,否則設置成0,然後當要判斷用戶是否登陸的時候,只要到資料庫當中去取這個值判斷就可以啦,用戶退出前,要先將這個狀態Update成0狀態就可以啦,不過這樣的話,當由於斷電而非法關閉的時候,用戶狀態就沒有辦法更新到資料庫當中啦;

兩個方案自認為還是方案一要好些啦;

Ⅳ 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中如何判斷用戶是否在線

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

網站頭公共文件加下邊代碼,意思即每個頁面都有包含下面這個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欄位存取時間戳。在文件頭每次刷新就更新它。一定時間不刷新就表示人物離線了。讀取這個會員數據的時候和當前時間戳對比小於一定數就離線了

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

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

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

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

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

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

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

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

Ⅸ php如何實現判斷用戶是否在線的功能

其實HTTP協議是無連接的,數據交換完畢就斷開了,理論上伺服器上無論用什麼語言寫的程序,都不可能知道客戶端的用戶是否在線。

一般的辦法都是客戶端打開網頁的時候,記錄一下最後打開時間,我們假釋打開一個頁面會保留多長的時間(比如10秒),那麼只要最好打開網頁的時間到現在沒有超過這個限度的就叫做在線,超過的就是離線。

熱點內容
單片機編譯器和驅動 發布:2025-01-13 13:31:33 瀏覽:439
tis伺服器怎麼進pe 發布:2025-01-13 13:31:02 瀏覽:276
android線程與線程通信 發布:2025-01-13 13:30:27 瀏覽:38
FTP伺服器本地策略 發布:2025-01-13 13:20:47 瀏覽:485
地下城堡2掛機腳本 發布:2025-01-13 13:20:44 瀏覽:205
web雲伺服器配置 發布:2025-01-13 13:19:54 瀏覽:459
小康密碼是多少 發布:2025-01-13 13:19:13 瀏覽:41
javafile類 發布:2025-01-13 13:19:08 瀏覽:83
c語言求逆 發布:2025-01-13 13:14:43 瀏覽:929
中控大屏怎麼看配置 發布:2025-01-13 13:11:33 瀏覽:912