2009-09-23 5 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

+0

네, 그 코드는 제가 위에 사용하고 있습니다 – JasonDavis

+0

코드가 잘 실행됩니다. – MitMaro

답변

1

두 번째 인수를 $ config_item [ 'bannedIPs']로 변경하고 $ config_item을 함수에 전달하십시오.

+0

* 진짜 * 페이지에 배열을 전달하고 있습니까? –

+0

Ahh 방금 다른 클래스를 사용하기 위해 많은 코드를 변경했으며 해당 배열로 특정 페이지를 표시했습니다. var는 포함되지 않았습니다. 죄송합니다. 감사합니다. – JasonDavis

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 _ * - functions (PCRE)를 사용하십시오. –

관련 문제