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代码
Dec 06 PHP
php xml实例 留言本
Mar 20 PHP
PHP在字符断点处截断文字的实现代码
Apr 21 PHP
php include类文件超时问题处理
Feb 06 PHP
PHP使用DirectoryIterator显示下拉文件列表的方法
Mar 13 PHP
PHP随手笔记整理之PHP脚本和JAVA连接mysql数据库
Nov 25 PHP
学习php设计模式 php实现观察者模式(Observer)
Dec 09 PHP
php版微信js-sdk支付接口类用法示例
Oct 12 PHP
Yii框架创建cronjob定时任务的方法分析
May 23 PHP
ThinkPHP5.0框架控制器继承基类和自定义类示例
May 25 PHP
一次因composer错误使用引发的问题与解决
Mar 06 PHP
PHP中Static(静态)关键字功能与用法实例分析
Apr 05 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设计模式之结构模式的深入解析
2013/06/13 PHP
安装apache2.2.22配置php5.4(具体操作步骤)
2013/06/26 PHP
在Windows XP下安装Apache+MySQL+PHP环境
2015/02/22 PHP
详解PHP中的mb_detect_encoding函数使用方法
2015/08/18 PHP
orm获取关联表里的属性值
2016/04/17 PHP
CI框架常用函数封装实例
2016/11/21 PHP
jquery获取ASP.NET服务器端控件dropdownlist和radiobuttonlist生成客户端HTML标签后的value和text值
2010/06/28 Javascript
jquery ajax请求方式与提示用户正在处理请稍等
2014/09/01 Javascript
简介JavaScript中的italics()方法的使用
2015/06/08 Javascript
基于Bootstrap漂亮简洁的CSS3价格表(附源码下载)
2017/02/28 Javascript
Jquery中.bind()、.live()、.delegate()和.on()之间的区别详解
2017/08/01 jQuery
在一个页面实现两个zTree联动的方法
2017/12/20 Javascript
JavaScript将数组转换为链表的方法
2020/02/16 Javascript
JsonServer安装及启动过程图解
2020/02/28 Javascript
微信小程序云函数添加数据到数据库的方法
2020/03/04 Javascript
Vue中正确使用Element-UI组件的方法实例
2020/10/13 Javascript
Python从MP3文件获取id3的方法
2015/06/15 Python
Python数据库的连接实现方法与注意事项
2016/02/27 Python
Python MD5加密实例详解
2017/08/02 Python
Python基础之函数的定义与使用示例
2019/03/23 Python
Django-migrate报错问题解决方案
2020/04/21 Python
python安装和pycharm环境搭建设置方法
2020/05/27 Python
css3实现针线缝合效果(图解步骤)
2013/02/04 HTML / CSS
使用HTML5原生对话框元素并轻松创建模态框组件
2019/03/06 HTML / CSS
.NET初级开发工程师面试题
2014/04/18 面试题
海量信息软件测试笔试题
2015/08/08 面试题
党员教师群众路线个人整改措施
2014/10/28 职场文书
考研复习计划
2015/01/19 职场文书
2015年学校教育教学工作总结
2015/04/22 职场文书
写给纪委的违纪检讨书
2015/05/05 职场文书
2015年电气技术员工作总结
2015/07/24 职场文书
加强党性修养心得体会
2016/01/21 职场文书
MySQL 全文索引使用指南
2021/05/25 MySQL
MySQL中distinct与group by之间的性能进行比较
2021/05/26 MySQL
nginx+lua单机上万并发的实现
2021/05/31 Servers
2022新作动画《福星小子》释出宣传影片 加入内田真礼&宫野真守配音演出
2022/04/08 日漫