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 相关文章推荐
也谈截取首页新闻 - 范例
Oct 09 PHP
PHP 写文本日志实现代码
May 18 PHP
php设计模式 Prototype (原型模式)代码
Jun 26 PHP
phpexcel导入excel数据使用方法实例
Dec 24 PHP
CI框架验证码CAPTCHA辅助函数用法实例
Nov 05 PHP
php继承中方法重载(覆盖)的应用场合
Feb 09 PHP
PHP获取QQ达人QQ信息的方法
Mar 05 PHP
Zend Framework动作助手Url用法详解
Mar 05 PHP
php mysql获取表字段名称和字段信息的三种方法
Nov 13 PHP
php变量与数组相互转换的方法(extract与compact)
Dec 02 PHP
PHP脚本自动识别验证码查询汽车违章
Dec 20 PHP
PHP树形结构tree类用法示例
Feb 01 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/05/21 PHP
逆序二维数组插入一元素的php代码
2012/06/08 PHP
解析php通过cookies获取远程网页的指定代码
2013/06/25 PHP
深入了解PHP中的Array数组和foreach
2016/11/06 PHP
thinkPHP模板引擎用法示例
2016/12/08 PHP
PHP基于XMLWriter操作xml的方法分析
2017/07/17 PHP
解决jquery .ajax 在IE下卡死问题的解决方法
2009/10/26 Javascript
ajax 同步请求和异步请求的差异分析
2011/07/04 Javascript
js中window.open()的所有参数详细解析
2014/01/09 Javascript
用模版生成HTML的的框架jquery.tmpl使用详解
2015/01/07 Javascript
JavaScript返回当前会话cookie全部键值对照的方法
2015/04/03 Javascript
浅析javascript异步执行函数导致的变量变化问题解决思路
2016/05/13 Javascript
详解如何使用router-link对象方式传递参数?
2019/05/02 Javascript
node.js使用stream模块实现自定义流示例
2020/02/13 Javascript
在Vue中实现随hash改变响应菜单高亮
2020/03/09 Javascript
Python实现简单截取中文字符串的方法
2015/06/15 Python
Django的session中对于用户验证的支持
2015/07/23 Python
python利用dir函数查看类中所有成员函数示例代码
2017/09/08 Python
python3 破解 geetest(极验)的滑块验证码功能
2018/02/24 Python
Pyspider中给爬虫伪造随机请求头的实例
2018/05/07 Python
python对矩阵进行转置的2种处理方法
2019/07/17 Python
pandas的to_datetime时间转换使用及学习心得
2019/08/11 Python
Python使用itchat模块实现简单的微信控制电脑功能示例
2019/08/26 Python
基于keras输出中间层结果的2种实现方式
2020/01/24 Python
PyCharm 2020 激活到 2100 年的教程
2020/03/25 Python
Python 防止死锁的方法
2020/07/29 Python
python 制作网站小说下载器
2021/02/20 Python
HTML5 绘制图像(上)之:关于canvas元素引领下一代web页面的问题
2013/04/24 HTML / CSS
什么是Smarty变量操作符?如何使用Smarty变量操作符
2014/07/18 面试题
请介绍一下Ant
2016/07/22 面试题
金融专业大学生职业生涯规划范文
2014/01/16 职场文书
四川成都导游欢迎词
2014/01/18 职场文书
学生保证书
2015/01/16 职场文书
如何利用STAR法则制作留学文书?
2019/08/26 职场文书
自己搭建resnet18网络并加载torchvision自带权重的操作
2021/05/13 Python
python解析照片拍摄时间进行图片整理
2022/07/23 Python