PHP Hata: Fonksiyon adı bir dize olmalıdır

6 Cevap

Benim PHP kodu üstüne birkaç satır aşağıdaki eklendi, ama hata veriyor:

Ölümcül hata: Fonksiyon adı on line 2 in / home / reg.php bir dize olmalıdır

<?php
if ($_COOKIE('CaptchaResponseValue') == "false")
{
    header('location:index.php');
    return;
}
?>

Ben bile denedim: $ _COOKIE ("CaptchaResponseValue"). Çerez başarıyla set ve kullanılabilir. Ben $ _COOKIE kullanıyorum zaman neden hata veriyor?

6 Cevap

Bu olmalıdır $_COOKIE['name'] değil, $_COOKIE('name')

$ _COOKIE Bir dizi, bir işlev değil.

Bir programlama dili ya da bir betik dili parantez kullanarak genellikle bir işlevi olduğu anlamına gelir.

Ancak $_COOKIE php bir Array olan, bir fonksiyon değildir. Eğer gelen verileri almak için hangi endeks sembolize köşeli ayraçlar ('[' ve ']') kullanmak dizilerde verilere erişmek için. Böylece yaparak $_COOKIE['test'] temelde diyorsun: "Bana dizin 'test' dan verileri verin.

- Çerez içine bakarak ya da hatta orada değilse (2) bkz: (1) Eğer yanlış olup olmadığını görmek istiyorum ya: Şimdi sizin durumda, iki olasılık var.

Bunun için, değişkeni ayarlamak veya değilse temelde denetler isset işlevini kullanın.

Example

if ( isset($_COOKIE['test'] ) )

Eğer değer false ve ayarlı olup olmadığını kontrol etmek istiyorsanız ve aşağıdakileri yapabilirsiniz:

if ( isset($_COOKIE['test']) && $_COOKIE['test'] == "false" )

Eğer aklınızda tutabilirsiniz Bir şey ilk test başarısız olursa, alışkanlık hatta ise bir sonraki deyimi kontrol rahatsız olduğunu AND (&&).

Ve aslında hata almak neden açıklamak için this page bakmak, "Fonksiyon bir dize olmalıdır". Bu PHP fonksiyonlarının temel oluşturulması hakkında, ne unutmamalısınız PHP bir fonksiyon sadece $ bunlardan biri değil karakterlerin belirli türleri içerebilir olmasıdır. PHP $ bir değişkeni temsil beri.

De _myFunction _myFunction123 myFunction ve diğer birçok desen, ama $ ve% gibi karakterler ile karıştırılarak çalışmaz: Bir fonksiyon gibi görünebilir.

Lütfen $_COOKIE, değil parantez kare parantez deneyin. Bu gibi:

<?php
if ($_COOKIE['CaptchaResponseValue'] == "false")
{
    header('Location: index.php');
    return;
}
?>

Ben de konum başlığı çok küçük bir çağrı düzeltildi.

Eğer çerez ayarlandığında eğer ... kullanımını tespit etmek istiyorsan

if (isset($_COOKIE['cookie']))

Parantezi nasıl kullanıldığını yararlı bir açıklama (Filip Ekberg en yararlı yanıt ek olarak, yukarıda) kısa çalışmanın Parenthesis in Programming Languages bulunabilir.

PHP.js, $ _COOKIE yılında is bir işlev ;-)

function $_COOKIE(name) {
    var nameEQ = name + "=";
    var ca = document.cookie.split(';');
    for(var i=0;i < ca.length;i++) {
        var c = ca[i];
        while (c.charAt(0)==' ') c = c.substring(1,c.length);
    if (c.indexOf(nameEQ) == 0) return decodeURIComponent(c.substring(nameEQ.length,c.length).replace(/\+/g, '%20'));
    }
    return null;
}

ile http://phpjs.org/functions/setcookie:509