Ошибка PHP: имя функции должно быть строкой - PullRequest
43 голосов
/ 23 октября 2009

Я добавил следующие строки в начало моего PHP-кода, но он выдает ошибку:

Неустранимая ошибка: имя функции должно быть строкой в ​​/home/reg.php в строке 2

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

Я пытался: $_COOKIE("CaptchaResponseValue"). Файл cookie успешно установлен и доступен. Почему при использовании $_COOKIE? 1010 * выдает ошибку

Ответы [ 8 ]

112 голосов
/ 23 октября 2009

Должно быть $_COOKIE['name'], а не $_COOKIE('name')

$ _ COOKIE - это массив, а не функция.

17 голосов
/ 23 октября 2009

Использование скобок в языке программирования или языке сценариев обычно означает, что это функция.

Однако $_COOKIE в php - это не функция, это Array . Для доступа к данным в массивах вы используете квадратные скобки ('[' и ']'), которые символизируют, по какому индексу получить данные. Таким образом, делая $_COOKIE['test'], вы в основном говорите: «Дайте мне данные из индекса« test ».

»

Теперь, в вашем случае, у вас есть две возможности: (1) либо вы хотите узнать, ложно ли это, - заглянув внутрь куки, либо (2) посмотрите, нет ли его там.

Для этого вы используете функцию isset , которая в основном проверяет, установлена ​​переменная или нет.

Пример

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

И если вы хотите проверить, установлено ли значение false и установлено ли оно, вы можете сделать следующее:

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

Одна вещь, которую вы можете иметь в виду, это то, что если первый тест не пройден, он даже не потрудится проверить следующий оператор, если он AND (&&).

И чтобы объяснить, почему вы на самом деле получаете ошибку «Функция должна быть строкой», посмотрите на эту страницу . Речь идет о базовом создании функций в PHP, но вы должны помнить, что функция в PHP может содержать только определенные типы символов, где $ не является одним из них. Так как в PHP $ представляет переменную.

Функция может выглядеть следующим образом: _myFunction _myFunction123 myFunction и во многих других шаблонах, но смешивание ее с символами, такими как $ и%, не будет работать.

5 голосов
/ 23 октября 2009

Попробуйте использовать квадратные скобки с $_COOKIE, а не в скобках. Как это:

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

Я также немного исправил ваш заголовок местоположения.

2 голосов
/ 04 августа 2016

Это будет $_COOKIE['CaptchaResponseValue'], а не $_COOKIE('CaptchaResponseValue')

2 голосов
/ 23 октября 2009

Если вы хотите убедиться, что файл cookie установлен ... используйте

if (isset($_COOKIE['cookie']))
1 голос
/ 05 октября 2011

В 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

0 голосов
/ 24 апреля 2017
<?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);
?>
0 голосов
/ 11 июня 2011

Полезное объяснение того, как используются фигурные скобки (в дополнение к полезному ответу Филипа Экберга, выше), можно найти в короткой статье Скобки в языках программирования .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...