thinkphp如何获取客户端IP


Posted in PHP onNovember 03, 2015

thinkphp框架中系统内置了get_client_ip方法用于获取客户端的IP地址,使用示例:
$ip = get_client_ip();
除了thinkphp内置get_client_ip函数外,也可使用下面函数获取客户端IP地址。
$type表示返回类型 0 返回IP地址, 1 返回IPV4地址数字
分享代码如下

function get_client_ip($type = 0) {
  $type    = $type ? 1 : 0;
  static $ip =  NULL;
  if ($ip !== NULL) return $ip[$type];
  if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
    $arr  =  explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']);
    $pos  =  array_search('unknown',$arr);
    if(false !== $pos) unset($arr[$pos]);
    $ip   =  trim($arr[0]);
  }elseif (isset($_SERVER['HTTP_CLIENT_IP'])) {
    $ip   =  $_SERVER['HTTP_CLIENT_IP'];
  }elseif (isset($_SERVER['REMOTE_ADDR'])) {
    $ip   =  $_SERVER['REMOTE_ADDR'];
  }
  // IP地址合法验证
  $long = ip2long($ip);
  $ip  = $long ? array($ip, $long) : array('0.0.0.0', 0);
  return $ip[$type];

希望本文对大家深入学习php程序设计有所帮助。

PHP 相关文章推荐
基于mysql的论坛(4)
Oct 09 PHP
php下获取客户端ip地址的函数
Mar 15 PHP
深入PHP异步执行的详解
Jun 03 PHP
解析php下载远程图片函数 可伪造来路
Jun 25 PHP
PHP字符串中特殊符号的过滤方法介绍
Feb 18 PHP
用PHP解决的一个栈的面试题
Jul 02 PHP
ThinkPHP自定义Redis处理SESSION的实现方法
May 16 PHP
thinkphp自带验证码全面解析
Sep 18 PHP
创建无限极分类树型结构的简单方法
Jun 20 PHP
由php中字符offset特征造成的绕过漏洞详解
Jul 07 PHP
关于 Laravel Redis 多个进程同时取队列问题详解
Dec 25 PHP
PHP+MySQL高并发加锁事务处理问题解决方法
Apr 30 PHP
php去除二维数组的重复项方法
Nov 03 #PHP
php在数据库抽象层简单使用PDO的方法
Nov 03 #PHP
smarty简单应用实例
Nov 03 #PHP
详解PHP+AJAX无刷新分页实现方法
Nov 03 #PHP
php获取远程文件的内容和大小
Nov 03 #PHP
php获取远程文件内容的函数
Nov 02 #PHP
php+ajax实现无刷新数据分页的办法
Nov 02 #PHP
You might like
php实现批量下载百度云盘文件例子分享
2014/04/10 PHP
jquery+php+ajax显示上传进度的多图片上传并生成缩略图代码
2014/10/15 PHP
PHP aes (ecb)解密后乱码问题
2015/06/22 PHP
PHP封装返回Ajax字符串和JSON数组的方法
2017/02/17 PHP
用showModalDialog弹出页面后,提交表单总是弹出一个新窗口
2009/07/18 Javascript
不安全的常用的js写法
2009/09/15 Javascript
Javascript数组的排序 sort()方法和reverse()方法
2012/06/04 Javascript
JS小游戏之象棋暗棋源码详解
2014/09/25 Javascript
node.js中的fs.truncate方法使用说明
2014/12/15 Javascript
jquery马赛克拼接翻转效果代码分享
2015/08/24 Javascript
js+canvas简单绘制圆圈的方法
2016/01/28 Javascript
jQuery实现只允许输入数字和小数点的方法
2016/03/02 Javascript
js 判断一组日期是否是连续的简单实例
2016/07/11 Javascript
微信小程序 条件渲染详解
2016/10/09 Javascript
解决ajax不能访问本地文件问题(利用js跨域原理)
2017/01/24 Javascript
jQuery回调方法使用示例
2017/06/26 jQuery
Vue组件模板形式实现对象数组数据循环为树形结构(实例代码)
2017/07/31 Javascript
用JS实现根据当前时间随机生成流水号或者订单号
2018/05/31 Javascript
基于JavaScript实现简单扫雷游戏
2021/01/02 Javascript
[01:06:39]DOTA2上海特级锦标赛主赛事日 - 1 胜者组第一轮#1Liquid VS Alliance第三局
2016/03/02 DOTA
[33:09]完美世界DOTA2联赛循环赛 Forest vs DM BO2第二场 10.29
2020/10/29 DOTA
python threading模块操作多线程介绍
2015/04/08 Python
Python 专题二 条件语句和循环语句的基础知识
2017/03/19 Python
python 字符串和整数的转换方法
2018/06/25 Python
python数据类型之间怎么转换技巧分享
2019/08/20 Python
Hotels.com爱尔兰:全球酒店预订
2017/02/24 全球购物
微软台湾官方网站:Microsoft台湾
2018/08/15 全球购物
印度购买眼镜和太阳镜网站:Coolwinks
2018/09/26 全球购物
化工专业个人的求职信范文
2013/11/28 职场文书
大学毕业感言100字
2014/02/03 职场文书
公职人员索取回扣检举信
2014/04/04 职场文书
2014年小学安全工作总结
2014/12/04 职场文书
2015年会计年终工作总结
2015/05/26 职场文书
现实表现证明材料
2015/06/19 职场文书
90条交通安全宣传标语
2019/10/12 职场文书
详解MySQL InnoDB存储引擎的内存管理
2021/04/08 MySQL