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安装攻略:常见问题解答(二)
Oct 09 PHP
PHP SQLite类
May 07 PHP
php设计模式 Template (模板模式)
Jun 26 PHP
如何利用php array_multisort函数 对数据库结果进行复杂排序
Jun 08 PHP
PHP 获取文件权限函数介绍
Jul 11 PHP
PHP基本语法总结
Sep 06 PHP
php实现随机显示图片方法汇总
May 21 PHP
PHP工程师VIM配置分享
Dec 15 PHP
PHP简单处理表单输入的特殊字符的方法
Feb 03 PHP
PHP自定义序列化接口Serializable用法分析
Dec 29 PHP
php识别翻转iphone拍摄的颠倒图片
May 17 PHP
PHP之header函数详解
Mar 02 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实现网站插件机制的方法
2009/11/10 PHP
vs中通过剪切板循环来循环粘贴不同内容
2011/04/30 PHP
基于php实现的php代码加密解密类完整实例
2016/10/12 PHP
几行代码轻松实现PHP文件打包下载zip
2017/03/01 PHP
Laravel框架中VerifyCsrfToken报错问题的解决
2017/08/30 PHP
thinkPHP5.0框架事务处理操作简单示例
2018/09/07 PHP
Laravel + Elasticsearch 实现中文搜索的方法
2020/02/02 PHP
IE和firefox浏览器的event事件兼容性汇总
2009/12/06 Javascript
jQuery调用WebService的实现代码
2011/06/19 Javascript
捕获键盘事件(且兼容各浏览器)
2013/07/03 Javascript
jquery+javascript编写国籍控件
2015/02/12 Javascript
基于jQuery实现文本框只能输入数字(小数、整数)
2016/01/14 Javascript
jQuery点击导航栏选中更换样式的实现代码
2017/01/23 Javascript
react-redux中connect的装饰器用法@connect详解
2018/01/13 Javascript
JS实现动态生成html table表格的方法分析
2018/07/11 Javascript
js实现无缝滚动双图切换效果
2019/07/09 Javascript
Python中的fileinput模块的简单实用示例
2015/07/09 Python
详解Python中 __get__和__getattr__和__getattribute__的区别
2016/06/16 Python
Django渲染Markdown文章目录的方法示例
2019/01/02 Python
python实现扫描局域网指定网段ip的方法
2019/04/16 Python
详解python 模拟豆瓣登录(豆瓣6.0)
2019/04/18 Python
flask框架url与重定向操作实例详解
2020/01/25 Python
HTML5-WebSocket实现聊天室示例
2016/12/15 HTML / CSS
canvas实现飞机打怪兽射击小游戏的示例代码
2018/07/09 HTML / CSS
ETO男装官方网店:ETO Jeans
2019/02/28 全球购物
接口可以包含哪些成员
2012/09/30 面试题
网站编辑求职信
2013/10/17 职场文书
医学院护理专业应届生求职信
2013/11/12 职场文书
优秀求职自荐信怎样写
2013/12/18 职场文书
人力资源经理自我评价
2014/01/04 职场文书
会议开场欢迎词
2014/01/15 职场文书
活动策划邀请函
2014/02/06 职场文书
工程承诺书怎么写
2014/05/24 职场文书
房屋产权共有协议书范本
2014/11/03 职场文书
2014年终工作总结范本
2014/12/15 职场文书
零基础学java之方法的定义与调用详解
2022/04/10 Java/Android