本文實例講述了PHP實現會員賬號單唯一登錄的方法。分享給大家供大家參考,具體如下:
情景再現
同一會員賬號限制在同一臺設備(電腦、手機、Ipad等)上單點登錄,重復登錄后,原登錄訪問頁面時則直接跳轉到登錄頁面且需要重新登錄才能正常訪問。
原理分析
A賬號在A電腦上登錄后,A賬號此時又用B電腦再次登錄,則A電腦請求頁面時,提示“重新登錄”的信息,并跳轉到登錄頁面
思路解析:
A賬號在A電腦上登錄后,把SESSION ID寫入TXT文件,每次訪問頁面時,都做一次校驗(比較txt文件的值是否和當前登錄的session_id的值相同)
實例
1、入口與校驗(index.php)
<?phpsession_start();$uid = 10;if(is_login($uid)){ header('location:loginSuccess.php');}else{ $getLogSessionId = file_get_contents('session_log/'.$uid.'.txt'); if($getLogSessionId){ echo "已在其他地方登錄,請重新登錄"; echo "<br>"; echo "5秒后跳轉到登錄頁面!"; header("refresh:5;url=login.php"); }else{ echo '第一次登錄...'; echo "<br>"; echo "3秒鐘后跳轉到登錄頁面!"; header("refresh:3;url=login.php"); }}/*** 通過登錄時寫入文件session_id和當前登錄設備后生成的session_id進行比較,相同則是同一臺設備登錄,不同則在別的地方登錄*/function is_login($uid){ $getLogSessionId = file_get_contents('session_log/'.$uid.'.txt'); if($getLogSessionId == session_id()){ return true; }else{ return false; }}
2、登錄(login.php)
<?phpsession_start();echo "登錄中....";echo '<br>';$uid = 10;file_put_contents('session_log/'.$uid.'.txt',session_id());echo "登錄完成";
3、登錄成功(loginSuccess.php)
<?phpecho "我登錄成功了!";
4、保存sessionId文件夾(session_log),測試代碼,需要手動建一個或者賦予自動生成文件的權限
希望本文所述對大家PHP程序設計有所幫助。
新聞熱點
疑難解答
圖片精選