PHP實現會員帳號只能唯一登入的代碼執行個體

來源:互聯網
上載者:User
本篇文章給大家帶來的內容是關於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),測試代碼,需要手動建一個或者賦予自動組建檔案的許可權

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.