2009-09-23 42 views
0

我用下面的函數數組或IP的,但現在我已經改變,從這個IP陣列:我該如何使用這個PHP數組?

$bannedIPs = array('127.0.0.0','72.189.218.85'); // Banned IPs array 

ipban($bannedIPs); 

function ipban($bannedIPs) { 
    if (in_array($_SERVER['REMOTE_ADDR'], $bannedIPs)) { 
     include ("site_banip.php"); 
     session_destroy(); 
     exit; 
    } 
} 

這樣:

$config_item['bannedIPs'] = array('127.0.0.0','72.189.218.85'); // Banned IPs array 

ipban($config_item['bannedIPs']); 

function ipban($bannedIPs) { 
    if (in_array($_SERVER['REMOTE_ADDR'], $bannedIPs)) { 
     include ("site_banip.php"); 
     session_destroy(); 
     exit; 
    } 
} 

現在我不能讓它工作,雖然,

Warning: in_array() [function.in-array]: Wrong datatype for second argument in C:\webserver\htdocs\includes\functions.inc.php on line 948 

是否可以做我想做的事情?

+1

您的評論拼寫錯誤。 ;) – MitMaro 2009-09-23 05:02:46

+0

是的,這是我上面使用的實際代碼 – JasonDavis 2009-09-23 05:07:02

+0

代碼對我來說運行良好。 – MitMaro 2009-09-23 05:08:11

回答

1

將第二個參數更改爲$ config_item ['bannedIPs']並將$ config_item傳遞給函數。

+0

你確定*你正在傳遞一個數組到你的*真實*頁面中? – 2009-09-23 05:06:27

+0

Ahh我只是改變了很多代碼來使用不同的類,並發現該數組的特定頁面var不包括,對不起,謝謝 – JasonDavis 2009-09-23 05:10:19

0

使用類似這樣的東西,如果您需要添加更多的IP,將來會非常靈活。

$whitelist = array(
    // ".*.32.255.255", // Sample 
    // "63.76.53.255", // Sample 
    // "46..*..*..*", // Sample 
    // "46.32..*..*", // Sample 
    // "46.32.255..*", // Sample 
    // "46..**.255.255", // Sample 
); 

foreach($whitelist as $ip) 
{ 
    if (ereg($ip, $_SERVER['REMOTE_ADDR'])) 
    { 
     include ("site_banip.php"); 
     session_destroy(); 
     exit; 
    } 
} 
+0

請不要使用ereg * -functions(POSIX)。從PHP 5.3.0起,此擴展已棄用 - 請改用preg _ * - 函數(PCRE)。 – 2009-09-23 06:38:41