PHP erkennt, dass sich mit demselben Konto nicht mehrere Personen gleichzeitig anmelden und Code teilen können

小云云
Freigeben: 2023-03-21 11:40:02
Original
2685 Leute haben es durchsucht

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)
Nach dem Login kopieren

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 &#39;<br>&#39;;  
                //    echo session_id();  
           if($res[&#39;session_id&#39;] === session_id()){  
               //unset($s[&#39;session_id&#39;]);  
               echo "ok";  
           }  else {  
               $ipdress = $_SERVER[&#39;REMOTE_ADDR&#39;];  
               $login_time = time();  
               $session_id = session_id();//重新赋予一个session_id  
               $sql = "update user set ip = &#39;$ipdress&#39;,login_time= &#39;$login_time&#39;,session_id = &#39;$session_id&#39;";  
               $result1 =mysql_query($sql);  
               // $ss = mysql_fetch_array($result);  
               if($result1){  
                   echo &#39;OK&#39;;  
  
               }  else {  
                   echo &#39;F&#39;;  
               }  
           }  
  
  
  
       }else {  
  
           echo &#39;FFFFFFFFFFFFFFFFFFFFFFF&#39;;  
  
  
       }  
  
   }
Nach dem Login kopieren

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!

Verwandte Etiketten:
php
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!