Heim > Artikel > Backend-Entwicklung > PHP erkennt, dass sich mit demselben Konto nicht mehrere Personen gleichzeitig anmelden und Code teilen können
Beim Überprüfen der Berechtigungen müssen Sie feststellen, ob die in die Datenbank geschriebene Sitzungs-ID mit der Sitzungs-ID in $_session übereinstimmt. Wenn sie inkonsistent ist, beenden Sie diese Implementierungsmethode, um zu verhindern, dass sich mehrere Personen gleichzeitig bei demselben Konto anmelden Gleichzeitig basiert es auf dieser session_id.
Stellen Sie sicher, dass Sie die Sitzungsüberlebenszeit festlegen. Die Sitzung wird gelöscht, wenn Sie die Seite schließen.
Wenn sich jemand anderes anmeldet, wird eine neue Sitzungs-ID geschrieben, sodass der alte Benutzer dies nicht tut Es besteht die Möglichkeit, die Berechtigungen zu überprüfen, es können jedoch keine Echtzeiteffekte erzielt werden. Hier liegt ein Fehler vor, d. h. Sie müssen die Datenbank jedes Mal abfragen, wenn Sie dies können Es wäre besser, diese Daten in Redis abzulegen
Tatsächlich gibt es andere Die Verifizierungsmethode ähnelt dieser Methode. Diese Methode erfordert jedoch eine Abfrage der Datenbank, es ist jedoch besser, sie hinter sich zu lassen Redis
Oder wenn Sie Sitzungen einheitlich verwalten, ist es besser, sie in der Datenbank abzulegen. Denken Sie daran, dass die Sitzungs-ID auch in der Datenbank gespeichert ist. Wenn Sie Redis verwalten, ist dies beispielsweise praktischer , Sie können die vorhandene session_id direkt aktualisieren
Zuerst die Tabelle entwerfen:
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)
Implementierung:
public function aa(){ session_start(); //ini_set('session.auto_start', 0); //关闭session自动启动 //ini_set('session.cookie_lifetime', 0);//设置session在浏览器关闭时失效 //ini_set('session.gc_maxlifetime', 3600); //session在浏览器未关闭时的持续存活时间 $uname =$_GET['name']; $data['name'] = $uname; $upwd =$_GET['pwd']; $data['pwd'] = $upwd; //$data['ip'] = $_SERVER['REMOTE_ADDR']; //print_r($ipdress);die; //$data['login_time'] = time();//登陆时间更新 //$data['session_id'] = session_id(); //$_SESSION['name']=$_GET['name']; //$res = M("onlyuser")->add($data); //if($res){ //echo "ok"; //}else{ //echo "false"; //} //开始验证 --防止同一个用户重复登录 nbsp;$res = M("onlyuser")->where("name = '$uname' AND pwd = '$upwd'")->find(); if($res){ // var_dump($s); // echo '<br>'; // echo session_id(); if($res['session_id'] === session_id()){ //unset($s['session_id']); echo "ok"; } else { $ipdress = $_SERVER['REMOTE_ADDR']; $login_time = time(); $session_id = session_id();//重新赋予一个session_id $sql = "update user 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'; } }
Verwandte Empfehlungen:
Wie man verhindert, dass sich ein Benutzername wiederholt anmeldet und wie man damit umgeht
Das obige ist der detaillierte Inhalt vonPHP erkennt, dass sich mit demselben Konto nicht mehrere Personen gleichzeitig anmelden und Code teilen können. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!