PHP错误:函数名称必须是字符串

时间:2009-10-23 06:38:29

标签: php

我在PHP代码的顶部添加了以下行,但是它引发了错误:

  

致命错误:函数名称必须是第2行/home/reg.php中的字符串

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

我试过了:$_COOKIE("CaptchaResponseValue")。 Cookie已成功设置并可用。当我使用$_COOKIE时,为什么它会给我一个错误?

8 个答案:

答案 0 :(得分:112)

应该是$_COOKIE['name'],而不是$_COOKIE('name')

$ _ COOKIE是一个数组,而不是函数。

答案 1 :(得分:17)

在编程语言或脚本语言中使用括号通常意味着它是一个函数。

然而,php中的$_COOKIE不是函数,而是Array。要访问数组中的数据,可以使用方括号('['和']')来表示从哪个索引获取数据。所以通过$_COOKIE['test'],您基本上会说:“从索引'测试'中获取数据。

现在,在你的情况下,你有两种可能性:(1)你想要看看它是否是假的 - 通过查看cookie或(2)看看它是否不存在。

为此,您使用isset函数,该函数基本上检查变量是否已设置。

示例

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

如果您想检查该值是否为false并且已设置,您可以执行以下操作:

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

您可以记住的一件事是,如果第一次测试失败,如果它是 AND &&),它甚至不会检查下一个语句。

要解释为什么你实际上得到错误“函数必须是一个字符串”,请查看this page。它是关于PHP中函数的基本创建,你必须记住的是PHP中的函数只能包含某些类型的字符,其中$不是其中之一。因为PHP $代表一个变量。

一个函数看起来像这样:_myFunction _myFunction123 myFunction以及许多其他模式,但是将它与$和%等字符混合起来将不起作用。

答案 2 :(得分:5)

尝试使用$_COOKIE的方括号,而不是括号。像这样:

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

我也纠正了您的位置标题调用。

答案 3 :(得分:2)

如果您想确定是否设置了cookie ...请使用

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

答案 4 :(得分:2)

它将是$_COOKIE['CaptchaResponseValue'],而不是$_COOKIE('CaptchaResponseValue')

答案 5 :(得分:1)

在PHP.js中,$ _COOKIE 一个函数;-)

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;
}

通过http://phpjs.org/functions/setcookie:509

答案 6 :(得分:0)

有关如何使用大括号的有用解释(除了上面的Filip Ekberg的有用答案)可以在简短的论文Parenthesis in Programming Languages中找到。

答案 7 :(得分:-2)

<?php
    require_once '../config/config.php';
    require_once '../classes/class.College.php';
    $Response = array();
    $Parms = $_POST;
    $Parms['Id'] = Id;  

        $Parms['function'] = 'DeleteCollege';
        switch ($Parms['function']) {
        case 'InsertCollege': {
            $Response = College::InsertCollege($Parms);
            break;
        }
        case 'GetCollegeById': {
            $Response = College::GetCollegeById($Parms['Id']);
            break;
        }
        case 'GetAllCollege': {
            $Response = College::GetAllCollege();
            break;
        }
        case 'UpdateCollege': {
            $Response = College::UpdateCollege($Parms);
            break;
        }
        case 'DeleteCollege': {
            College::DeleteCollege($Parms['Id']);
            $Response = array('status' => 'R');
            break;
        }
    }
    echo json_encode($Response);
?>