이 글은 주로 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 = '<font color="blue"'.">登录IP:".$ip."</font>"; }else{ //不同则记数这个ip地址数量 $count = M('log')->where("name='{$name}' AND ip='{$ip}'")->count(); //如果超过一定数量则是正常ip否则为异常返回字符串 if($count > 10){ $str = '<font color="blue"'.">登录IP:".$ip."</font>"; }else{ $str = '<font color="red"'.">异常IP:".$ip."</font>"; } } return $str; }
참고: 모든 프레임워크에 적합하며 get_client_ip()는 IP 획득 기능입니다.
get_client_ip 함수 조각:
function get_client_ip() { if(getenv('HTTP_CLIENT_IP') && strcasecmp(getenv('HTTP_CLIENT_IP'), 'unknown')) { $ip = getenv('HTTP_CLIENT_IP'); } elseif(getenv('HTTP_X_FORWARDED_FOR') && strcasecmp(getenv('HTTP_X_FORWARDED_FOR'), 'unknown')) { $ip = getenv('HTTP_X_FORWARDED_FOR'); } elseif(getenv('REMOTE_ADDR') && strcasecmp(getenv('REMOTE_ADDR'), 'unknown')) { $ip = getenv('REMOTE_ADDR'); } else{ $ip = $_SERVER['REMOTE_ADDR']; } return $ip; }
위는 이 글의 전체 내용이며, 모든 분들의 학습에 도움이 되기를 바랍니다.
관련 권장 사항:
php 엄격한 통제 만료 타임 세션에 대한 자세한 설명
위 내용은 PHP를 이용한 비정상 로그인 IP 탐지 기능 생성 예의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!