php实现单个用户禁止重复登录,防止同一用户同时登陆
生活随笔
收集整理的這篇文章主要介紹了
php实现单个用户禁止重复登录,防止同一用户同时登陆
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
<?php
session_start();
//ini_set('session.auto_start', 0); //關閉session自動啟動
//ini_set('session.cookie_lifetime', 0);//設置session在瀏覽器關閉時失效
//ini_set('session.gc_maxlifetime', 3600); //session在瀏覽器未關閉時的持續存活時間 //防止同一用戶的重復登錄
$server = '127.0.0.1';
$username = 'root';
$password = '';
$conn = mysql_connect($server, $username, $password);
$e = mysql_select_db('test',$conn);
mysql_query("SET NAMES UTF8");//訪問url,http://www.test.com/single_login.php?name=zx&pwd=zxheader("Content-type:text/html;charset=utf-8");$username =$_GET['name'];$password =$_GET['pwd'];//$ipdress = $_SERVER['REMOTE_ADDR'];
//
//$login_time = time();//登陸時間更新
//
//$session_id = session_id();
//
//$_SESSION['name']=$_GET['name'];//var_dump($session_id);//$sql = "INSERT INTO tongji VALUES ('NULL','$data_id','$time','$ipdress','$session_id')";//$result =mysql_query($sql);$sql = "select * from slogin where username = '$username' and password = '$password'";
//var_dump($sql);
$result =mysql_query($sql);
$s = mysql_fetch_array($result);//權限驗證的時候一定要判斷數據庫寫入session_id是不是和$_session里面的session_id是不是一致,如果不一致就退出,這個防止同一個賬戶被多個人同時登陸的實現方法就是基于這個session_id
//一定要設置session的存活時間,和session關掉頁面就session消除
//如果有其他人登陸的時候,會寫入新的session_id,這樣舊的用戶就會被權限驗證不通過,但是不能做到實時效果,這樣就擠掉了舊用戶,這里有個缺陷,就是每次驗證權限的時候就需要查詢數據庫,如果可以吧這個數據放在redis就比較好
//其實其他的驗證方法,也類似使用這種方法,有個驗證的憑證,只不過這種方法需要查詢數據庫,但是放在redis之后就比較好
//或者統一管理session的時候,比如放在數據庫就更好了,記住吧session_id也存入數據庫,或者放在memcash,redis就比較方便,比如在redis進行管理的時候,就可以直接更新掉存在session_id
if($s){
// var_dump($s);
// echo '<br>';
// echo session_id();if($s['session_id'] === session_id()){//unset($s['session_id']);} else {$ipdress = $_SERVER['REMOTE_ADDR'];$login_time = time();$session_id = session_id();//重新賦予一個session_id$sql = "update slogin set ip = '$ipdress',login_time= '$login_time',session_id = '$session_id'"; $result1 =mysql_query($sql);// $ss = mysql_fetch_array($result);if($result1){echo 'OK';} else {echo 'F';}}}else {echo 'FFFFFFFFFFFFFFFFFFFFFFF';}
?數據庫結構
1 id int(11) AUTO_INCREMENT
2 username varchar(20) utf8_general_ci
3 password varchar(20) utf8_general_ci
4 ip varchar(20) utf8_general_ci
5 session_id varchar(100) utf8_general_ci
6 login_time int(20)
7 regist_time int(20)
轉載于:https://www.cnblogs.com/zx-admin/p/4444426.html
超強干貨來襲 云風專訪:近40年碼齡,通宵達旦的技術人生總結
以上是生活随笔為你收集整理的php实现单个用户禁止重复登录,防止同一用户同时登陆的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java转iOS-第一个项目总结(2)
- 下一篇: 一段JAVA签名算法的PHP改写