PHP实现获取客户端IP并获取IP信息


Posted in PHP onMarch 17, 2015

代码很简洁,功能很实用,这里就不多废话了,直接奉上:

<?php

/**

 * 获取客户端IP

 * @param  integer $type 返回类型 0:string,1:long

 * @return string|long

 */

function getClientIp($type = 0) {

    $ip = NULL;

    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'];

    }

    $long = sprintf("%u", ip2long($ip));

    $ip   = $long ? array($ip, $long) : array('0.0.0.0', 0);

    return $ip[$type];

}

/**

 * 获取IP信息

 * @param  string|long $ip  IP地址

 * @return array

 */

function getIpInfo($ip)

{

    if (is_long($ip)) {

        $ip = long2ip($ip);

    }

    $api = 'http://ip.taobao.com/service/getIpInfo.php';

    $ret = file_get_contents($api . '?ip=' . $ip);

    $ret = json_decode($ret, true);

    if ($ret['code'] == 0) {

        return $ret['data'];

    } 

    return array();

}

以上就是本文的全部内容了,希望大家能够喜欢。

PHP 相关文章推荐
一个显示天气预报的程序
Oct 09 PHP
PHP容易被忽略而出错陷阱 数字与字符串比较
Nov 10 PHP
php5.3提示Function ereg() is deprecated Error问题解决方法
Nov 12 PHP
PHP中使用CURL获取页面title例子
Jan 07 PHP
PHP CodeIgniter框架的工作原理研究
Mar 30 PHP
php使用Imagick生成图片的方法
Jul 31 PHP
ThinkPHP中数据操作案例分析
Sep 27 PHP
Smarty环境配置与使用入门教程
May 11 PHP
PHP自定义函数获取汉字首字母的方法
Dec 01 PHP
PHP时间处理类操作示例
Sep 05 PHP
php用户名的密码加密更安全的方法
Jun 21 PHP
Smarty模板类内部原理实例分析
Jul 03 PHP
支付宝接口开发集成支付环境小结
Mar 17 #PHP
php读取文件内容到数组的方法
Mar 16 #PHP
php实现以只读方式打开文件的方法
Mar 16 #PHP
php实现在服务器上创建目录的方法
Mar 16 #PHP
php实现删除空目录的方法
Mar 16 #PHP
php上传文件并存储到mysql数据库的方法
Mar 16 #PHP
php保存信息到当前Session的方法
Mar 16 #PHP
You might like
PHP入门
2006/10/09 PHP
thinkphp中连接oracle时封装方法无法用的解决办法
2013/06/17 PHP
PHP中file_exists函数不支持中文名的解决方法
2014/07/26 PHP
php之readdir函数用法实例
2014/11/13 PHP
PHP中new static() 和 new self() 的区别介绍
2015/01/09 PHP
php内嵌函数用法实例
2015/03/20 PHP
thinkphp中字符截取函数msubstr()用法分析
2016/01/09 PHP
Zend Framework入门应用实例详解
2016/12/11 PHP
Laravel 简单实现Ajax滚动加载示例
2019/10/22 PHP
如何在Mozilla Gecko 用Javascript加载XSL
2007/01/09 Javascript
学习ExtJS Panel常用方法
2009/10/07 Javascript
jquery插件制作教程 txtHover
2012/08/17 Javascript
javascript:json数据的页面绑定示例代码
2014/01/26 Javascript
php is_numberic函数造成的SQL注入漏洞
2014/03/10 Javascript
利用HTML5+Socket.io实现摇一摇控制PC端歌曲切换
2017/01/13 Javascript
微信小程序开发的基本流程步骤
2019/01/31 Javascript
微信JS-SDK updateAppMessageShareData安卓不能自定义分享详解
2019/03/29 Javascript
react项目从新建到部署的实现示例
2021/02/19 Javascript
常见的在Python中实现单例模式的三种方法
2015/04/08 Python
编写Python的web框架中的Model的教程
2015/04/29 Python
Python多线程爬虫简单示例
2016/03/04 Python
Python开发的实用计算器完整实例
2017/05/10 Python
对python判断ip是否可达的实例详解
2019/01/31 Python
python程序变成软件的实操方法
2019/06/24 Python
pytorch多进程加速及代码优化方法
2019/08/19 Python
python爬虫 2019中国好声音评论爬取过程解析
2019/08/26 Python
Python爬虫代理池搭建的方法步骤
2020/09/28 Python
SheIn俄罗斯:时尚女装网上商店
2017/02/28 全球购物
《三顾茅庐》教学反思
2014/04/10 职场文书
法制宣传标语
2014/06/23 职场文书
六一亲子活动总结
2014/07/01 职场文书
我在伊朗长大观后感
2015/06/16 职场文书
CSS预处理框架——Stylus
2021/04/21 HTML / CSS
为什么mysql字段要使用NOT NULL
2021/05/13 MySQL
聊聊mysql都有哪几种分区方式
2022/04/13 MySQL
Windows server 2012 NTP时间同步的实现
2022/06/25 Servers