>  기사  >  백엔드 개발  >  PHP를 이용한 비정상 로그인 IP 탐지 기능 생성 예

PHP를 이용한 비정상 로그인 IP 탐지 기능 생성 예

墨辰丷
墨辰丷원래의
2018-05-30 17:45:591727검색

이 글은 주로 PHP가 로그인 비정상 IP 감지 기능을 만드는 예를 소개합니다. 관심 있는 친구들이 참고하면 도움이 될 것입니다.

함수 쿼리 데이터베이스 순회 구현 사용

/**
 * 不在常用ip地址登录返回描红信息
 * @param string $ip  ip地址
 * @param string $name  用户名
 * @return string
 */

function errorIp($ip,$name){

  $nowip = get_client_ip();
  //判断ip和当前ip是否相同,不同则查询数据库对比
  if($ip == $nowip ){
    //相同直接返回字符串
    $str = &#39;<font color="blue"&#39;.">登录IP:".$ip."</font>";
  }else{
    //不同则记数这个ip地址数量
    $count =  M(&#39;log&#39;)->where("name=&#39;{$name}&#39; AND ip=&#39;{$ip}&#39;")->count();
    //如果超过一定数量则是正常ip否则为异常返回字符串
    if($count > 10){
      $str = &#39;<font color="blue"&#39;.">登录IP:".$ip."</font>";
    }else{
      $str = &#39;<font color="red"&#39;.">异常IP:".$ip."</font>";
    }
  }

  return $str;

}

참고: 모든 프레임워크에 적합하며 get_client_ip()는 IP 획득 기능입니다.

get_client_ip 함수 조각:

function get_client_ip() {
  if(getenv(&#39;HTTP_CLIENT_IP&#39;) && strcasecmp(getenv(&#39;HTTP_CLIENT_IP&#39;), &#39;unknown&#39;)) {
    $ip = getenv(&#39;HTTP_CLIENT_IP&#39;);
  } elseif(getenv(&#39;HTTP_X_FORWARDED_FOR&#39;) && strcasecmp(getenv(&#39;HTTP_X_FORWARDED_FOR&#39;), &#39;unknown&#39;)) {
    $ip = getenv(&#39;HTTP_X_FORWARDED_FOR&#39;);
  } elseif(getenv(&#39;REMOTE_ADDR&#39;) && strcasecmp(getenv(&#39;REMOTE_ADDR&#39;), &#39;unknown&#39;)) {
    $ip = getenv(&#39;REMOTE_ADDR&#39;);
  } else{
    $ip = $_SERVER[&#39;REMOTE_ADDR&#39;];
  }
  return $ip;
}

위는 이 글의 전체 내용이며, 모든 분들의 학습에 도움이 되기를 바랍니다.


관련 권장 사항:

php 배열 요소의 중복을 빠르게 제거하는 방법

이진 트리를 지그재그 순서로 인쇄하는 PHP 방법

php 엄격한 통제 만료 타임 세션에 대한 자세한 설명

위 내용은 PHP를 이용한 비정상 로그인 IP 탐지 기능 생성 예의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.