分享下用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 防火墙配置一例