PHP는 동일한 계정으로 여러 사람이 동시에 코드 공유에 로그인하는 것을 허용하지 않는다는 것을 알고 있습니다.

小云云
풀어 주다: 2023-03-21 11:40:02
원래의
2685명이 탐색했습니다.

권한 확인 시 데이터베이스에 기록된 session_id가 $_session의 session_id와 일치하는지 확인해야 합니다. 일치하지 않는 경우 동일한 계정으로 여러 사람이 동시에 로그인하는 것을 방지하기 위한 구현 방법입니다. 이 session_id를 기반으로 합니다.

세션 생존 시간을 꼭 설정해 주시고, 페이지를 닫으면 세션이 소멸됩니다.
다른 사람이 로그인하면 새로운 session_id가 기록되므로 기존 사용자는 권한 확인에 실패하게 되지만, 그럴 수는 없습니다. 실시간 효과가 있으므로 기존 사용자를 압박할 수 있습니다. 즉, 권한을 확인할 때마다 데이터베이스를 쿼리해야 한다는 것입니다. 이 데이터를 redis
에 넣는 것이 좋습니다. 사실 다른 검증 방법도 비슷하게 사용할 수 있는데 이 방법은 데이터베이스에 질의를 해야 하는데, Redis 뒤에 두는 것이 더 좋고, 아니면 세션을 균일하게 관리할 때 넣는 것이 더 좋습니다. 데이터베이스에 session_id도 저장되어 있거나 memcash에 저장되어 있으면 redis가 더 편리합니다. 예를 들어 redis를 관리할 때 기존 session_id를 직접 업데이트할 수 있습니다.

먼저 테이블을 디자인하세요:

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)
로그인 후 복사

구현:

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;;  
  
  
       }  
  
   }
로그인 후 복사

관련 권장사항:

사용자 이름으로 반복 로그인을 방지하는 방법

위 내용은 PHP는 동일한 계정으로 여러 사람이 동시에 코드 공유에 로그인하는 것을 허용하지 않는다는 것을 알고 있습니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
php
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!