2011-06-20 55 views
0

我正在使用下面的代码(简化版本)来确定我的IP是否在黑名单上。我需要修改它才能确定IP是否在白名单上。该函数将要求我查看返回的特定代码。

127.0.0.1 
127.0.0.2 
127.0.0.3 
127.0.0.4 
127.0.0.5 

如何调整此脚本以在脚本运行时返回(代码)输出值?

$host = '222.22.222.222'; 
$rbl = 'hostkarma.junkemailfilter.com'; 
$rev = array_reverse(explode('.', $host)); 
$lookup = implode('.', $rev) . '.' . $rbl; 
if ($lookup != gethostbyname($lookup)) { 

    echo "ip: $host is listed in $rbl\n"; 
} else { 
    echo "ip: $host NOT listed in $rbl\n"; 
} 

编辑:对不起球员,脚本的功能上面会返回确认,如果IP地址是在$ RLB进入黑名单。但是,Hostkarma会返回一个代码,即上面显示的127.0代码之一,因为每个代码都表示不同的块状态。我需要获取代码。 “echo $ lookup;”只是返回反向查找,如下所示:222.222.22.222.hostkarma.junkemailfilter.com

+0

你可以尝试澄清你想要的预期输出是什么?我最好打赌你的意思是迈克尔的回答,但我怀疑这是你真正需要的(只是因为它太简单)。 – Evert

+0

如果返回的字符串相同,则表示查找失败(请参阅手册http://ca.php.net/gethostbyname)。 –

回答

1
$lookup = implode('.', $rev) . '.' . $rbl; 
$value = gethostbyname($lookup); 
if ($lookup != $value){ 
    echo "ip: $host is listed in $rbl\n"; 
    echo "return value: $value\n"; 
} 
else{ 
    echo "ip: $host NOT listed in $rbl\n"; 
} 

127.x.x.x代码应该给你由gethostbyname返回的值。

+0

完美!感谢火箭。 –

+0

@JT:不客气。 –

0

您的意思是?

echo $lookup; 
+0

@迈克尔 - 做OP的意思是在哪里? – Neal

+0

@Neal:那也是我对 – Evert

+0

问题的最好诠释@Michael - 你是什么意思? - 你的解释是什么? – Neal