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

Я добавил несколько строк поверх моего PHP-кода, но он дает ошибку:

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

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

Я даже пробовал: $ _COOKIE («CaptchaResponseValue»). Файл cookie успешно установлен и доступен. Почему он дает ошибку, когда я использую $ _COOKIE?

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

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

$ _COOKIE – это массив, а не функция.

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

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

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

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

пример

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

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

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

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

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

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

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

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

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

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

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

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

В 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

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

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