使用函数查询数据库遍历实现
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
/** * 不在常用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函数片段:
1
2
3
4
5
6
7
8
9
10
11
12
|
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制作登录异常ip检测功能的实例代码就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持服务器之家。