2015-10-20 27 views
2

我有一個Drupal 7.x網站部署,我需要幫助使用下面的函數並返回基於IP的真/假(更多信息在下面)。我想在Drupal的規則模塊中使用它。如何編寫PHP代碼來評估客戶端IP?

的Drupal帶有一個內置的功能..

<?php 
    print ip_address(); 
?> 

這個方法返回一個IPv4地址的形式在客戶端的IP地址,如172.16.14.100(例子)。 (https://api.drupal.org/api/drupal/includes%21bootstrap.inc/function/ip_address/7

我需要能夠抓住ip_address();並在PHP中進行評估,如果ip_address()在172.16.1.1 - 172.16.255.255範圍內,我希望評估返回一個布爾值(返回TRUE),如果不是,則返回false。

任何人都可以提供幫助嗎?

+0

見的答案,但對於這樣一個簡單的範圍內,一個骯髒的劈將是測試,如果IP開頭爲「172.16」用正則表達式,如果你不希望使用IP功能;-) – Capsule

+0

膠囊打擾,你能舉一個例子來說明如何用regexp來做這件事嗎? – exxoid

+0

來吧,這不是一個編程課程...至少閱讀說明書:http://php.net/manual/en/function.preg-match.php – Capsule

回答

1

您可以嘗試使用ip2long將IPv4地址更改爲長整數並將其用於比較。

$example_ip = ip2long("192.168.1.1"); 
$high_ip = ip2long("172.16.255.255"); 
$low_ip = ip2long("172.16.1.1"); 
if ($example_ip <= $high_ip && $low_ip <= $example_ip) { 
    return true; 
} 
else { 
    return false; 
} 
+0

經過一些修改後,這爲我所需要的。謝謝! – exxoid