Подтвердить что ты не робот

Ошибка PHP: имя функции должно быть строкой

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

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

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

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

4b9b3361

Ответ 1

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

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

Ответ 2

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

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

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

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

Пример

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

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

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

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

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

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

Ответ 3

Попробуйте использовать квадратные фигурные скобки с помощью $_COOKIE, а не круглых скобок. Вот так:

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

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

Ответ 4

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

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

Ответ 5

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

Ответ 6

В 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

Ответ 7

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

Ответ 8

<?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);
?>