最近做一个短信投票的接口,为了避免短信平台和投票网站数据不一致,还有就是避免其他通过盗用接口进行数据post而导致一些对账出现损失。所以需要指定特定IP的服务器发送过来的数据才是有效的,其他IP的都不作处理。
实现方法就是在接口接收程序里面做接收数据IP判断,只有允许的IP的数据我们才接收入库。
php获取数据发送方IP信息的代码为:
<?
if(getenv('HTTP_CLIENT_IP')) {
$onlineip = getenv('HTTP_CLIENT_IP');
} elseif(getenv('HTTP_X_FORWARDED_FOR')) {
$onlineip = getenv('HTTP_X_FORWARDED_FOR');
} elseif(getenv('REMOTE_ADDR')) {
$onlineip = getenv('REMOTE_ADDR');
} else {
$onlineip = $HTTP_SERVER_VARS['REMOTE_ADDR'];
}
echo $onlineip;
?>
上面代码$onlineip为发送数据端IP地址。
把这个代码放在receivesms.php里面,加上判断条件
<?
if(getenv('HTTP_CLIENT_IP')) {
$onlineip = getenv('HTTP_CLIENT_IP');
} elseif(getenv('HTTP_X_FORWARDED_FOR')) {
$onlineip = getenv('HTTP_X_FORWARDED_FOR');
} elseif(getenv('REMOTE_ADDR')) {
$onlineip = getenv('REMOTE_ADDR');
} else {
$onlineip = $HTTP_SERVER_VARS['REMOTE_ADDR'];
}
//echo $onlineip;
/**************************
其他接收参数
$PHONE=$_POST['PHONE'];
$SENDTIME=$_POST['SENDTIME'];
$TITLE=$_POST['TITLE'];
$CONTENT=$_POST['CONTENT'];
。。。。。。。
**************************/
if($onlineip=="123.218.123.123"&& $PHONE!=null&&$CONTENT!=null){
//插入数据库
}else{
//其他IP的不作处理
}
?>
以上代码 是获取发送数据方IP地址信息,判断是否是指定IP传过来的,如果是就插入数据库,不是就不作处理。