技术指南

首页 / 技术指南

技术指南

代理IP分享PHP获得IP地址的方式

2019-10-04 19:07:03   来源:   点击:
  IP是我们在网络上的身份认证,代理IP的出现,让IP获取不再复杂,我们现在可以通过购买代理服务商的业务,来开展各项工作。换ip以下分享PHP获取IP地址的方法:

 

代理IP分享PHP获得IP地址的方式

 

  /**

  * 获取客户端IP地址

  * <br />来源:ThinkPHP

  * <br />"X-FORWARDED-FOR" 是代理服务器通过 HTTP Headers 提供的客户端IP。代理服务器可以伪造任何IP。

  * <br />要防止伪造,不要读这个IP即可(同时告诉用户不要用HTTP 代理)。

  * @param integer $type 返回类型 0 返回IP地址 1 返回IPV4地址数字

  * @param boolean $adv 是否进行高级模式获取(有可能被伪装)

  * @return mixed

  */

  function get_client_ip($type = 0, $adv = false) {

  $type = $type ? 1 : 0;

  static $ip = NULL;

  if ($ip !== NULL)

  return $ip[$type];

  if ($adv) {

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

  }

  } elseif (isset($_SERVER['REMOTE_ADDR'])) {

  $ip = $_SERVER['REMOTE_ADDR'];

  }

  // IP地址合法验证, 防止通过IP注入攻击

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

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

  return $ip[$type];

  }

  /**

  * 获得用户的真实IP地址

  * <br />来源:ecshop

  * <br />$_SERVER和getenv的区别,getenv不支持IIS的isapi方式运行的php

  * @access public

  * @return string

  */

  function real_ip() {

  static $realip = NULL;

  if ($realip !== NULL) {

  return $realip;

  }

  if (isset($_SERVER)) {

  if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {

  $arr = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']);

  /* 取X-Forwarded-For中第一个非unknown的有效IP字符串 */

  foreach ($arr AS $ip) {

  $ip = trim($ip);

  if ($ip != 'unknown') {

  $realip = $ip;

  break;

  }

  }

  } elseif (isset($_SERVER['HTTP_CLIENT_IP'])) {

  $realip = $_SERVER['HTTP_CLIENT_IP'];

  } else {

  if (isset($_SERVER['REMOTE_ADDR'])) {

  $realip = $_SERVER['REMOTE_ADDR'];

  } else {

  $realip = '0.0.0.0';

  }

  }

  } else {

  if (getenv('HTTP_X_FORWARDED_FOR')) {

  $realip = getenv('HTTP_X_FORWARDED_FOR');

  } elseif (getenv('HTTP_CLIENT_IP')) {

  $realip = getenv('HTTP_CLIENT_IP');

  } else {

  $realip = getenv('REMOTE_ADDR');

  }

  }

  // 使用正则验证IP地址的有效性,防止伪造IP地址进行SQL注入攻击

  preg_match("/[\d\.]{7,15}/", $realip, $onlineip);

  $realip = !empty($onlineip[0]) ? $onlineip[0] : '0.0.0.0';

  return $realip;

  }

 

  以上是PHP获得IP的方式具体代码分享。关注换ip,学习更多IP以及大数据知识,自建200+机房,数万拨号线路,提供企业级HTTP代理服务,IP覆盖全国200+城市,高匿名代理IP帮助你保护个人隐私。无论是网络爬虫、互联网营销、投票打榜都可以使用。

上一篇:PHP设置代理的方法
下一篇:用代理IP刷IP的原理

关闭
18076763811
动态IP