dizi hata php

4 Cevap php
<?PHP
$bannedIPs = array('127.0.0.1','72.189.218.85');

function ipban() {
    if (in_array($_SERVER['REMOTE_ADDR'], $bannedIPs)) { 
    	echo 'test';
    }	
}

ipban();

?>

Bu betiğin çıktısı:

Uyarı: in_array () [function.in-array]: C ikinci argüman için yanlış veri türü: hattında 93 \ webserver \ htdocs \ test \ array.php

Birisi bana neden söyleyebilir misiniz? Ben bunu alamadım

Ve evet $ _SERVER ['REMOTE_ADDR'] 127.0.0.1 görüntülüyor

UPDATE As suggested I tried this now but still get the same error

function ipban() {
    $bannedIPs = array('127.0.0.1','72.189.218.85');
    if (in_array($_SERVER['REMOTE_ADDR'], $bannedIPs)) { 
    	echo 'test';
    }	
}
ipban();

4 Cevap

Eğer değişken kapsam belirleme ile küçük bir sorun haline çalıştırmak.

PHP bir fonksiyonu dışında herhangi bir değişken içinde erişilebilir değil. Bu üstesinden gelmek için birden fazla yolu vardır.

Sen $bannedIPs gibi, işlev içinde bildirebilirsiniz ya:

function ipban() {
    $bannedIPs = array('127.0.0.1','72.189.218.85');
    if (in_array($_SERVER['REMOTE_ADDR'], $bannedIPs)) { 
        echo 'test';
    }   
}

Erişim $bannedIPs global anahtar sözcüğünü kullanarak işlevin dışında için fonksiyonu söyle:

$bannedIPs = array('127.0.0.1','72.189.218.85');

function ipban() {
    global $bannedIPs;

    if (in_array($_SERVER['REMOTE_ADDR'], $bannedIPs)) { 
        echo 'test';
    }
}

Ya da, $GLOBALS süper global kullanın:

$bannedIPs = array('127.0.0.1','72.189.218.85');

function ipban() {
    if (in_array($_SERVER['REMOTE_ADDR'], $GLOBALS['bannedIPs'])) { 
        echo 'test';
    }
}

Ben Değişken kapsamı kılavuz sayfasını okumanızı öneririz:

PHP: Variable Scope


If it's still not working, you have another problem in your code. In which case, you might want to consider using a var_dump() $bannedIPs önce bizi aşağı tüm oy ne veri türü kontrol etmek.

function ipban() {
    global $bannedIPs;

    var_dump($bannedIPs);
}

Sizin değişken $bannedIPs out-of-kapsam fonksiyonu içinde. Değişkenler kapsam kadar okuyun: http://php.net/variables.scope

$var = 'xyz';

function abc() {
    // $var does not exist here

    $foo = 'abc';
}

// $var exists here

// $foo does not exist here

RE: Güncellemesi:

Fonksiyon işlerin içindeki değişken hareket, sizin kod parçacığını ince yürütür. Kodunuzu başka bir şey olması var.

Eğer işlev bildiriminde $ bannedIPs taşırsanız ne olur? PHP kapsam dışında bulunuyor düşünüyor mümkündür.

Eğer küresel $ bannedIPs gerekir;

Bu benim için çalışıyor:

function ipban() {
    $bannedIPs = array('127.0.0.1','72.189.218.85');
    $ip = '127.0.0.1';
    if (in_array($ip, $bannedIPs)) { 
        echo 'test';
    }   
}
ipban();

Yani, eğer o çalışır IP adresi, yerine görmek isteyebilirsiniz, ve sonra nihayet SERVER değişkeni ile değiştirin.