??? 最近做一个短信投票的接口,为了避免短信平台和投票网站数据不一致,还有就是避免其他通过盗用接口进行数据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传过来的,如果是就插入数据库,不是就不作处理。
?