分享下用curl获取指定IP下所有信息的api代码。
有关curl的相关内容,可以参考以下文章:
php curl上传文件的简单例子
php curl post的简单示例
php curl应用实例分析
php curl用法的实例代码
php使用curl判断远程文件是否存在的代码
php使用curl伪造IP来源的代码
php curl 学习总结
先充充电,然后看下面的代码。
代码如下:
<?php /** * curl取指定IP信息的API代码 * edit by www. */ function getIpInfo($ip,$timeout=15) { if(!function_exists('curl_init') or !function_exists('simplexml_load_string')) return false; $ch = curl_init("http://www./ip_query2.php?ip={$ip}&timezone=true"); $options = array( CURLOPT_RETURNTRANSFER => true, ); curl_setopt_array($ch,$options); $res = curl_exec($ch); curl_close($ch); if($xml = simplexml_load_string($res)) { $dt = array(); foreach ($xml->Location->children() as $key=>$item) { $dt[$key] = strtolower($item); } return $dt; } else { return false; } } $current_Ip_Info = getIpInfo('61.164.140.55'); var_dump($current_Ip_Info); /* 返回内容: array(13) { ["Ip"]=> string(13) "61.164.140.55" ["Status"]=> string(2) "ok" ["CountryCode"]=> string(2) "cn" ["CountryName"]=> string(5) "china" ["RegionCode"]=> string(2) "02" ["RegionName"]=> string(8) "zhejiang" ["City"]=> string(5) "ruian" ["ZipPostalCode"]=> string(0) "" ["Latitude"]=> string(7) "27.7814" ["Longitude"]=> string(7) "120.628" ["TimezoneName"]=> string(14) "asia/chongqing" ["Gmtoffset"]=> string(5) "28800" ["Isdst"]=> string(1) "0" } */ ?>
在程序中用到了php的加密函数mhash,报错: Fatal error : Call to undefined function mhash()
以下提供二种解决方法,供参考。
1,导入php_mhash.dll扩展文件,除此之外还要导入 libmhash.dll (mhash 库的载入依赖这个文件) ,
在 Apache 的配置文件 Httpd.conf 中加载 LoadFile C:/php/libmhash.dll” 。
2,使用自定义的mhash增强函数。
<?php /** * 自定义的mhash增强函数 * edit by www. */ function hmac_md5($key, $data) { if (extension_loaded('mhash')) { return bin2hex(mhash (MHASH_MD5, $data, $key)); } $b = 64; if (strlen($key) > $b) { $key = pack('H*', md5($key)); } $key = str_pad($key, $b, chr(0x00)); $ipad = str_pad('', $b, chr(0x36)); $opad = str_pad('', $b, chr(0x5c)); $k_ipad = $key ^ $ipad; $k_opad = $key ^ $opad; return md5($k_opad . pack('H*', md5($k_ipad . $data))); } ?>
代码说明:
hmac_md5 函数中的参数$key和$data对应mhash原有的3,2参数。
这两个方法都可以顺利使用php 的mhash 加密函数。
我们知道拒绝服务攻击,即DDOS攻击会导致带宽被占用,让正常用户无法访问网站。
这里提供一个简单的参考方法,修改php.ini文件
2) ”allow_url_fopen“设为Off
3) php_sockets.dll 把这个模块打开
重启使配置生效,一般可以抵御掉DDOS攻击。
更完善些的预防方法,可以参考文章:
php下ddos攻击与防范代码
如果以上方法抵挡不住的话,还可以通过IP策略、防火墙等手段阻止恶意攻击。
相关内容,可以参考如下的文章:
1,IPSEC安全策略配置
批量开启IPSEC端口的批处理脚本
批处理设置IPsec安全策略的方法介绍
命令行下IPSec封锁端口的方法详解
win2003中需要用ipsec封锁的恶意端口
win2003 IPsec安全策略之关闭端口
2,防火墙配置
CentOS防火墙开启、关闭与开放指定端口的方法
iptables防火墙禁止某些IP访问ssh服务
linux中iptables防火墙配置实例分享
centos中iptables防火墙的配置方法
iptables 防火墙配置一例