PHP制作登录异常ip检测功能的实例代码


Posted in PHP onNovember 16, 2016

使用函数查询数据库遍历实现

/**
 * 不在常用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制作登录异常ip检测功能的实例代码就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
mysql 查询指定日期时间内sql语句实现原理与代码
Dec 16 PHP
浏览器预览PHP文件时顶部出现空白影响布局分析原因及解决办法
Jan 11 PHP
is_uploaded_file函数引发的不能上传文件问题
Oct 29 PHP
在Ubuntu 14.04上部署 PHP 环境及 WordPress
Sep 02 PHP
ThinkPHP独立分组使用的注意事项
Nov 25 PHP
php创建session的方法实例详解
Jan 27 PHP
PHP获取数组的键与值方法小结
Jun 13 PHP
Codeigniter控制器controller继承问题实例分析
Jan 19 PHP
PHP查询附近的人及其距离的实现方法
May 11 PHP
PHP中常用的数组操作方法笔记整理
May 16 PHP
php cookie工作原理与实例详解
Jul 18 PHP
php+redis实现消息队列功能示例
Sep 19 PHP
php array_walk_recursive 使用自定的函数处理数组中的每一个元素
Nov 16 #PHP
Smarty模板常见的简单应用分析
Nov 15 #PHP
Smarty日期时间操作方法示例
Nov 15 #PHP
Fleaphp常见函数功能与用法示例
Nov 15 #PHP
PHP+JS实现的商品秒杀倒计时用法示例
Nov 15 #PHP
php遍历、读取文件夹中图片并分页显示图片的方法
Nov 15 #PHP
thinkphp的dump函数无输出实例代码
Nov 15 #PHP
You might like
PHP的加密方式及原理
2012/06/14 PHP
深入php内核之php in array
2015/11/10 PHP
用JTrackBar实现的模拟苹果风格的滚动条
2007/08/06 Javascript
JQuery 初体验(建议学习jquery)
2009/04/25 Javascript
jquery $(document).ready() 与window.onload的区别
2009/12/28 Javascript
javascript采用数组实现tab菜单切换效果
2012/12/12 Javascript
浅析document.ready和window.onload的区别讲解
2013/12/18 Javascript
node.js中的path.basename方法使用说明
2014/12/09 Javascript
jQuery子元素过滤选择器用法示例
2016/09/09 Javascript
原生Javascript插件开发实践
2017/01/09 Javascript
JavaScript函数节流和函数防抖之间的区别
2017/02/15 Javascript
使用nodejs爬取前程无忧前端技能排行
2017/05/06 NodeJs
表格展示利器 Bootstrap Table实例代码
2017/09/06 Javascript
判断div滑动到底部的scroll实例代码
2017/11/15 Javascript
详解vue 计算属性与方法跟侦听器区别(面试考点)
2018/04/23 Javascript
Angular中的ng-template及angular 使用ngTemplateOutlet 指令的方法
2018/08/08 Javascript
vue 自动化路由实现代码
2019/09/03 Javascript
vue多页面项目中路由使用history模式的方法
2019/09/23 Javascript
Javascript和jquery在selenium的使用过程
2019/10/31 jQuery
vue+vant实现商品列表批量倒计时功能
2020/01/13 Javascript
基于Vue中的父子传值问题解决
2020/07/27 Javascript
Vue2.x-使用防抖以及节流的示例
2021/03/02 Vue.js
[11:01]2014DOTA2西雅图邀请赛 冷冷带你探秘威斯汀
2014/07/08 DOTA
django实现前后台交互实例
2017/08/07 Python
浅析Python数据处理
2018/05/02 Python
Python数据可视化:箱线图多种库画法
2019/11/06 Python
Python数据可视化:饼状图的实例讲解
2019/12/07 Python
python计算auc的方法
2020/09/09 Python
Python3 用matplotlib绘制sigmoid函数的案例
2020/12/11 Python
深入研究HTML5实现图片压缩上传功能
2016/03/25 HTML / CSS
类、抽象类、接口的差异
2016/06/13 面试题
八一建军节演讲稿
2014/09/10 职场文书
2015年迎新晚会策划书
2015/07/16 职场文书
工伤调解协议书
2016/03/21 职场文书
餐厅营销的秘密:为什么老顾客会流水?
2019/08/08 职场文书
Vue鼠标滚轮滚动切换路由效果的实现方法
2021/08/04 Vue.js