/**
* 获取客户端IP地址
* @param integer $type 返回类型 0 返回IP地址 1 返回IPV4地址数字
* @return mixed
*/
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 = sprintf("%u",ip2long($ip));
$ip = $long ? array($ip, $long) : array('0.0.0.0', 0);
return $ip[$type];
}

最新文章

  1. Scalaz(9)- typeclass:checking instance abiding the laws
  2. 百度地图 判断marker是否在多边形内
  3. SQL Server 阻止了对组件 'Ad Hoc Distributed Queries' 的 STATEMENT 'OpenRowset/OpenDatasource' 的访问,因为此组件已作为此服务器安全配置的一部分而被关闭。系统管理员可以通过使用 sp_configure 启用 'Ad Hoc Distributed Queries'。
  4. Arduino运行时突然[卡死在某一行/立即重启/串口输出乱码/程序执行不正常]的可能原因
  5. 131. Palindrome Partitioning
  6. FileGeodatabase和PersonalGeodatabase与ArcSDEGeodatabase三种数据库比较.
  7. raphael入门到精通---属性和事件篇
  8. 查看htmlView
  9. SpringMVC 国际化-中英文切换
  10. 《javascript高级程序设计》笔记三
  11. 利用python 创建XML文件
  12. 《前端之路》之 JavaScript 高级技巧、高阶函数(一)
  13. kali的网络服务
  14. JMeter二次开发环境配置
  15. css,html备忘录
  16. mybatis一级缓存详解
  17. 【原创】数据库基础之Mysql(3)mysql删除历史binlog
  18. C++读写图片数据转成Base64格式的一种方法
  19. 5大JavaScript前端框架简介
  20. php如何控制用户对图片的访问 PHP禁止图片盗链

热门文章

  1. Shell脚本实现检测某ip网络畅通情况,实战用例
  2. 比特币、莱特币钱包下载和把数据迁移到C盘以外其他盘
  3. 【运维技术】Nexus私服安装配置常用问题
  4. 解析分布式锁之Zookeeper实现(一)
  5. TED #08# Learn to read Chinese ... with ease!
  6. Python入门之python可变对象与不可变对象
  7. Python 线程调用
  8. 怎么说, 开发会很乐意去主动修改bug?
  9. 一些应该使用mongodb或者其他文档存储而不是redis或mysql、oracle json的情形(最近更新场景)
  10. bzoj 3223 文艺平衡树 - Splay