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 相关文章推荐
PHP学习之PHP运算符
Oct 09 PHP
基于mysql的论坛(1)
Oct 09 PHP
不用数据库的多用户文件自由上传投票系统(1)
Oct 09 PHP
PHP 透明水印生成代码
Aug 27 PHP
php读取qqwry.dat ip地址定位文件的类实例代码
Nov 15 PHP
PHP中trait使用方法详细介绍
May 21 PHP
thinkphp 抓取网站的内容并且保存到本地的实例详解
Aug 25 PHP
利用PHP访问MySql数据库的逻辑操作以及增删改查的实例讲解
Aug 30 PHP
Laravel 使用查询构造器配合原生sql语句查询的例子
Oct 12 PHP
php 命名空间(namespace)原理与用法实例小结
Nov 13 PHP
详解使用php-cs-fixer格式化代码
Sep 16 PHP
Thinkphp5+Redis实现商品秒杀代码实例讲解
Dec 29 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
Codeigniter中集成smarty和adodb的方法
2016/03/04 PHP
另一个javascript小测验(代码集合)
2011/07/27 Javascript
一个JS函数搞定网页标题(title)闪动效果
2014/05/13 Javascript
jQuery实现列表的全选功能
2015/03/18 Javascript
JQuery在循环中绑定事件的问题详解
2016/06/02 Javascript
利用Node.js对文件进行重命名
2017/03/12 Javascript
微信小程序日历组件calendar详解及实例
2017/06/08 Javascript
js微信应用场景之微信音乐相册案例分享
2017/08/11 Javascript
vue获取当前激活路由的方法
2018/03/17 Javascript
vant(ZanUi)结合async-validator实现表单验证的方法
2018/12/06 Javascript
nodejs实现日志读取、日志查找及日志刷新的方法分析
2019/05/20 NodeJs
JS利用prototype给类添加方法操作详解
2019/06/21 Javascript
微信小程序页面间传递数组对象方法解析
2019/11/06 Javascript
js数组相减简单示例【删除a数组所有与b数组相同元素】
2020/03/04 Javascript
Vue-cli打包后部署到子目录下的路径问题说明
2020/09/02 Javascript
[46:02]DOTA2上海特级锦标赛D组资格赛#2 Liquid VS VP第二局
2016/02/28 DOTA
python处理文本文件并生成指定格式的文件
2014/07/31 Python
Python下使用Psyco模块优化运行速度
2015/04/05 Python
Python操作Sql Server 2008数据库的方法详解
2018/05/17 Python
浅谈django orm 优化
2018/08/18 Python
Linux 修改Python命令的方法示例
2018/12/03 Python
对python_discover方法遍历所有执行的用例详解
2019/02/13 Python
python中tkinter的应用:修改字体的实例讲解
2019/07/17 Python
基于python中__add__函数的用法
2019/11/25 Python
利用Python pandas对Excel进行合并的方法示例
2020/11/04 Python
html5实现多图片预览上传及点击可拖拽控件
2018/03/15 HTML / CSS
联想西班牙官网:Lenovo西班牙
2018/08/28 全球购物
乡镇庆八一活动方案
2014/02/02 职场文书
纠纷协议书
2014/04/16 职场文书
银行求职自荐信
2014/06/30 职场文书
义务教育学校标准化建设汇报材料
2014/08/16 职场文书
代收款委托书范本
2014/10/01 职场文书
离职信范本
2015/06/23 职场文书
小王子读书笔记
2015/06/29 职场文书
文艺节目主持词
2015/07/06 职场文书
SQL Server作业失败:无法确定所有者是否有服务器访问权限的解决方法
2021/06/30 SQL Server