2011-06-20 53 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